Reputation: 18485
When installing Subsystem for Linux and Ubuntu from store on his development machine I can switch (or start) to Ubuntu shell by simply
But the Ubuntu shell start in /home/techsupp
folder by default. Is it possible to force it to start in same folder than the one I use my Ubuntu
command?
So in my example I should be in
/mnt/h
Thank you.
What I already tried:
H:\>ubuntu help
Launches or configures a linux distribution.
Usage:
<no args>
- Launches the distro's default behavior. By default, this launches your default shell.
run <command line>
- Run the given command line in that distro, using the default configuration.
- Everything after `run ` is passed to the linux LaunchProcess call.
config [setting [value]]
- Configure certain settings for this distro.
- Settings are any of the following (by default)
- `--default-user <username>`: Set the default user for this distro to <username>
clean
- Uninstalls the distro. The appx remains on your machine. This can be
useful for "factory resetting" your instance. This removes the linux
filesystem from the disk, but not the app from your PC, so you don't
need to redownload the entire tar.gz again.
help
- Print this usage message.
I also discover this request on uservoice: https://wpdev.uservoice.com/forums/266908-command-prompt-console-windows-subsystem-for-l/suggestions/13421103-let-us-right-click-open-bash-here-from-explorer?tracking_code=8a8bc624c72a8336565fcd6d5737d712
Please vote for it.
Upvotes: 114
Views: 111465
Reputation: 458
Step 1: Install Windows Terminal
Step 2: Go to the folder you want to open Ubuntu in and open Windows Terminal by right-clicking.
Step 3: Go to Windows Terminal Settings and navigate to your Linux distro (in my case Ubuntu 20.04) and check this option.
Now every time you open Ubuntu through the Windows terminal it will open in that directory.
Upvotes: 7
Reputation: 10793
if your default terminal is Ubuntu
, then you can open Ubuntu
in the current dir easily.
Go to the address bar of the file explorer by clicking on it
or you can use keyboard shortcut alt+d
and
there type
wt -d .
and if the default is Ubuntu
, it will open Ubuntu
on that path or you can also type
ubuntu run
and it doesn't matter if the default terminal is Ubuntu
or not, it will open ubuntu
there regardless of anything.
Upvotes: 2
Reputation: 4067
Install windows terminal
, from Microsoft store
Once you have ubuntu installed you will see it on the list of profiles and then click on open json
Open cmd
, type wsl
, type cd
, type pwd
wslc then copy the path [!
And put it in the json file, on ubuntu profile, startingDirectory
Note: I have used linux home directory as default directory used by ubuntu. So if you feel like you have other directory you want to use you can replace it with /home/claranceliberi
to your own prefereble directory
Upvotes: 7
Reputation: 1624
I'm on Windows 10 Home with May Update and have Ubuntu 18.04 for WSL installed, I can open the console in any folder with Shift + Right Click and selecting the Open Linux shell here option
Upvotes: 111
Reputation: 47
First, you have to check whether wsl
is using ubuntu as default or not.
For me it was not. Write the below command on cmd:
wsl -l
If not then Write wsl -s Ubuntu-20.04
to set it as default.
Now you can run ubuntu bash from any directory by doing shift + Rightclick as shown Here.
Upvotes: 2
Reputation: 312
The method that has worked for me is to use the Windows Terminal app and configure it to start in the desired location.
Example based on WSL2 and Ubuntu 20.04:
settings.json - Add this line to "Ubuntu-20.04" section:
"startingDirectory": "//wsl$/Ubuntu-20.04/home/<username>/"
Change <username> to be the name of the user you created on install of Ubuntu 20.04.
Upvotes: 10
Reputation: 15086
If you check in Task Manager how the explorer "Open Linux shell here" option opens wsl, you can see that there's a "--cd" option.
Upvotes: 50
Reputation: 400
seems that there is a very simpel solution.
just add the following in Ubuntu configuration in the profiles.json file
"commandline": "wsl ~ -d Ubuntu",
Upvotes: 10
Reputation: 59
with this little script you can execute every command from the directory your Powershell is currently in. It only works if the drive is already mounted to /mnt/ in the subsystem. It doesn't work with network resources.
function tux {$dl = (pwd).Path | wsl eval "cut -c 1 | tr 'A-Z' 'a-z'"; $wd = (pwd).Path | wsl eval "cut -d : -f 2 | tr '\\' '/' 2> /dev/null" ; wsl eval "cd '/mnt/$dl$wd' && eval '$args'"}
after you have executed it, you can use it like this:
tux vim test.txt
Upvotes: 0
Reputation: 75668
ubuntu run
run <command line>
Run the provided command line in the current working directory. If no
command line is provided, the default shell is launched.
As far as I can tell the effect is the same as running ubuntu
, except that it starts in the current directory.
This command works even as a right click open here command in explorer. Adapting from this article:
HKEY_CLASSES_ROOT\Directory\Background\shell
and create a new key(Default)
to "Open Ubuntu here" or similar.command
(Default)
to ubuntu run
Now you have a functional "Open Ubuntu here" right click menu in explorer.
The problem I have with wsl
is that the wsl bash window doesn't have the Ubuntu icon, even if it starts the Ubuntu distribution.
Upvotes: 58
Reputation: 1110
If you use wsl.exe
, it will start WSL in current directory. But the difference between wsl
and ubuntu
is that if you have installed two or more distros (e,g, Ubuntu and Fedora), the default one will get started. You can set the default to Ubuntu by running wslconfig /setdefault Ubuntu
.
Reference: [1] https://learn.microsoft.com/en-us/windows/wsl/wsl-config
Upvotes: 28