G'day:
This is a follow on from the previous two articles:
- Changing where I home my source code dramatically speeds up my Windows / WSL2 / Docker environment
- Changing my WSL Bash prompt to include my current Git branch
All that is working well, but I had a wee problem with switching my Windows Terminal config from starting Git Bash shells to do the equivalent with directly running a Bash shell on my WSL Ubuntu filesystem.
For Git Bash, I have profiles set up like this:
{
"commandline": "C:\\apps\\Git\\git-bash.exe",
"guid": "{be9a184b-1c89-4ac5-88da-3ef93cd5ec98}",
"hidden": false,
"icon": "C:\\apps\\Git\\mingw64\\share\\git\\git-for-windows.ico",
"name": "Git Bash (SymfonyFastTrack)",
"startingDirectory": "\\\\wsl$\\Ubuntu\\home\\adam\\src\SymfonyFastTrack",
"tabTitle": "Git Bash (SymfonyFastTrack)"
}
And when I open a terminal with that profile I get:
adam@DESKTOP MINGW64 //wsl$/ubuntu/home/adam/src/SymfonyFastTrack (main) $
I figured it would be easy with an Ubuntu one, I'd copy the default one:
{
"guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
"hidden": false,
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl"
}
Change its GUID, give it a different name and a startingDirectory value and done. But no: one cannot have more than one profile for Windows.Terminal.Wsl it would seem: It didn't show up (it also didn't error, which Windows Terminal is pretty good at when it doesn't like something).
So now I have two issues: getting a second Ubuntu Bash shell profile working at all, and then: point it to the correct starting directory.
The first thing I found out is that in the current version of Windows Terminal, the startingDirectory is not honoured for Ubuntu anyhow. So that's a non-starter. I did a lot of googling, and that turned up nothing. Then I turned to a more powerful search engine: I Mingo-ed it. He didn't quite nail the solution, but he got me onto the right track: asking ChatGPT. I dunno why I didn't start there. After a bit of back and forth, ChatGPT and I came up with this:
{
"commandline": "wsl.exe -d Ubuntu /bin/bash --rcfile <(echo \"source ~/.bashrc; cd ~/src/SymfonyFastTrack\")",
"guid": "{3933fa46-657f-4db9-ad6a-2bee51554bc5}",
"icon": "C:\\Users\\camer\\AppData\\Local\\wt\\bash.png",
"name": "Bash (SymfonyFastTrack)",
"tabTitle": "Bash (SymfonyFastTrack)"
}
Explanation:
- wsl.exe -d Ubuntu is the long form of what I tried before with source:Windows.Terminal.Wsl; name: Ubuntu.
- /bin/bash says to run Bash.
- --rcfile says "using this RC file (eg: instead of .bashrc.
- <(echo [etc]): instead of using an actual file, take it from stdout.
- source ~/.bashrc: first my actual .bashrc.
- cd ~/src/SymfonyFastTrack\: but then switch to this directory.
And when I use this profile, I get what I want:
adam@DESKTOP //wsl$/ubuntu/home/adam/src/SymfonyFastTrack (main) $
Cool. All done.
This was another article which is largely me fumbling around being a n00b, but we all start that way with things I guess, so maybe this will short-circuit all the goolging, mingoing and ChatGPTing I had to do to arrive at the solution.
And - seriously Mingo - cheers for helping with this.
Righto.
--
Adam