在运行 Ubuntu 的 Windows 终端中,如何将默认目录设为 ~ (/home/jake) 而不是 / (root)?

Jak*_*xon 14 command-line windows directory windows-subsystem-for-linux json

我从 Windows 10 内的 Microsoft Store 安装了 Windows Terminal 和 Ubuntu(我不知道这是 WSL 版本 1 还是版本 2。wsl -l -v命令失败。)。

我的默认目录设置为正确的目录,但它始终以 root 身份打开。我该如何修复此配置?

在此处输入图片说明

Kul*_*lfy 15

这是Windows 终端中Microsoft 终端的 GitHub 页面上作为wsl 配置文件 #592 的开始目录设置问题提出的问题。和不尊重的事情是有些东西的爱好。

实际上,startingDirectoryWindows 终端似乎在 WSL fs 路径下不能很好地工作,因为该问题并非特定于$HOME,它存在于/.

虽然user3140225 的方法是一个好的开始,但根据DHowett-MSFT 的评论

这也是在您的机器上使用 bash 的所有其他内容中获得奇怪和意外行为的好方法。

由于在 Ubuntu 的配置文件中您提供了命令行wsl.exe -d Ubuntu. 此命令行调用 WSL 并要求它启动在当前目录中完成的“Ubuntu”,即如果您wsl.exe -d Ubuntu在 Windows 桌面中运行,Ubuntu 将在 Windows 桌面上启动。

作为解决方法,您可以修改命令行并使用以下方法之一。

  1. 由于 WSL 专门用于 Linux,因此可以预期Tilde Expansion。因此,您可以在命令行中指定“起始目录”,并将以下内容用作命令行的值。

    wsl.exe ~ -d ubuntu
    
    Run Code Online (Sandbox Code Playgroud)
  2. 安装 Ubuntu 应用程序后,它会自动注册ubuntu命令。因此,ubuntu命令将调用 Ubuntu 应用程序。这样做的好处是它总是从$HOME. 因此,您可以将命令行的值更改为

    ubuntu
    
    Run Code Online (Sandbox Code Playgroud)

    注意:如果您使用的是 Ubuntu 18.04 或 16.04 应用程序,命令会相应地有所不同。以上仅适用于 Ubuntu 应用程序。

  3. 如果您对更改命令行感到不舒服,您仍然可以通过修改startDirectory

    "startingDirectory":"//wsl$/Ubuntu/home/jake/"
    
    Run Code Online (Sandbox Code Playgroud)

    致谢: caksoylar 的评论


Bea*_*nog 7

打开 WSL 并cd转到您的主目录:

cd ~
Run Code Online (Sandbox Code Playgroud)

然后使用nano编辑您的.bashrc文件:

nano .bashrc
Run Code Online (Sandbox Code Playgroud)

在文件底部添加以下行:

cd ~
Run Code Online (Sandbox Code Playgroud)

最后,重启 WSL。

  • 在一行中:`echo 'cd ~' >>~/.bashrc` (5认同)