如何在 Windows 10 中的 ConEmu 中为 WSL(Ubuntu)指定启动目录

如何在 Windows 10 中的 ConEmu 中为 WSL(Ubuntu)指定启动目录

我已经在 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:
    PS> Set-Location C:\ # a.k.a. "cd C:\"
    PS> wsl
    /mnt/c$ # Now inside WSL shell
    
    ConEmu 显然使用 Windows%userprofile%作为新任务的起始目录,这就是您默认进入的原因C:\Users\MyUser。这也是上面的第二个选项(要求 ConEmu 设置起始目录)有效的原因。
  • 不推荐: cd转到 shell 启动配置中的目录(例如.bashrc)。不推荐,因为如果您想从其他目录启动,它将无法使用任何其他选项。前两种技术更加灵活。
  • 不推荐:您还可以在 ConEmu 任务中启动一个“外部”shell,执行命令cd,然后执行一个新的“内部”子shell(甚至用exec'd shell 替换自身)。例如:
    %windir%\system32\wsl.exe -cur_console:pm:/mnt --exec sh -c "cd /home/myuser/myproject; exec bash"
    
    这不是一个坏的这样做的必要方法;只是有时启动两个 shell 感觉有点浪费。上面的前两种技术更好。但这个版本有它的用途。例如,我经常在 Windows Terminal 中以这种方式启动 WSL 实例,以便在sh启动之前设置一些环境变量tmux,然后fish在每个窗口中启动 shell。

相关内容