我已经在 Windows 10 上安装了 WSL2,并成功下载并设置了 Ubuntu。
我已经安装并设置了 ConEmu 终端以成功运行 Ubuntu。
但是 ConEmu 在 C:\Users\MyUsers 中打开 Ubuntu
我想在 Linux (Ubuntu) Home\MyUsers\MyProjectFolder 目录中启动
我尝试在 ConEmu - 设置 - 任务 - 6- Bash(或 7- Ubuntu)中使用以下每个命令,但均不起作用:
%windir%\system32\wsl.exe -cur_console:pm:/mnt --distribution Ubuntu -c "cd"
%windir%\system32\wsl.exe -cur_console:p -c "cd"
%windir%\system32\wsl.exe -cur_console:p -c "cd /home"
%windir%\system32\wsl.exe -cur_console:pm:/mnt --distribution Ubuntu -c "~"
set "PATH=%ConEmuBaseDirShort%\wsl;%PATH%" & %ConEmuBaseDirShort%\conemu-cyg-64.exe --wsl -cur_console:pm:/mnt -C "~"
wsl.exe -cur_console:pm:/mnt -C "~"
答案1
简短答案
使用以下任一方式设置 ConEmu 任务:
%windir%\system32\wsl.exe -cur_console:pm:/mnt --cd \\wsl$\Ubuntu\home\MyUser\MyProjectFolder
-new_console:d:\\wsl$\Ubuntu\home\MyUser\MyProjectFolder %windir%\system32\wsl.exe -cur_console:pm:/mnt
细节
为了完整起见,我将重复之前删除的答案中的信息。即使它没有直接回答您的(更新后的)问题,但将其作为参考仍然很好。
有多种技术可用于指定 WSL 实例的起始目录:
- 您可以使用(目前,仍然未记录的)
wsl ~
快捷方式。 - 您可以使用(同样未记录的)
wsl --cd <WindowsDirectory>
命令行启动到指定目录。请注意,这需要 Windows 样式的目录路径,而不是 Linux 路径。例如,wsl --cd C:\
。要使用 WSL 实例内的路径,您可以使用 Windows 的\\wsl$\<distroname>\path
。因此您的/home/myuser/myproject
将变成wsl --cd \\wsl$\Ubuntu\home\myuser\myproject
(假设您的发行版/实例名称是“Ubuntu”)。 - 您可以在启动 WSL 实例之前在父进程中设置目录。默认情况下,WSL 将启动到当前目录。例如,从 PowerShell:
ConEmu 显然使用 WindowsPS> Set-Location C:\ # a.k.a. "cd C:\" PS> wsl /mnt/c$ # Now inside WSL shell
%userprofile%
作为新任务的起始目录,这就是您默认进入的原因C:\Users\MyUser
。这也是上面的第二个选项(要求 ConEmu 设置起始目录)有效的原因。 - 不推荐:
cd
转到 shell 启动配置中的目录(例如.bashrc
)。不推荐,因为如果您想从其他目录启动,它将无法使用任何其他选项。前两种技术更加灵活。 - 不推荐:您还可以在 ConEmu 任务中启动一个“外部”shell,执行命令
cd
,然后执行一个新的“内部”子shell(甚至用exec
'd shell 替换自身)。例如:
这不是一个坏的这样做的必要方法;只是有时启动两个 shell 感觉有点浪费。上面的前两种技术更好。但这个版本能有它的用途。例如,我经常在 Windows Terminal 中以这种方式启动 WSL 实例,以便在%windir%\system32\wsl.exe -cur_console:pm:/mnt --exec sh -c "cd /home/myuser/myproject; exec bash"
sh
启动之前设置一些环境变量tmux
,然后fish
在每个窗口中启动 shell。