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

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

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

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

在此处输入图片描述

答案1

这是Microsoft Terminal 的 GitHub 页面在 Windows 终端中wsl 配置文件的 StartingDirectory 设置问题 #592。 和不尊重事物是对某些事物的爱好。

实际上,Windows Terminal 在 WSL fs 路径下似乎startingDirectory无法正常工作,因为该问题并不特定于$HOME,它存在于所有文件夹中/

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

这也是在您的机器上使用 bash 的所有其他事物中产生奇怪和意外行为的好方法。

答案2

您可以执行以下操作:

  1. 打开 WSL 并~/.bashrc使用以下命令编辑文件nano

    nano ~/.bashrc
    
  2. 在文件底部添加以下行:

    cd ~
    
  3. Ctrl按+O再按Ctrl+保存并关闭文件X

  4. 最后,重新启动 WSL。

答案3

看到这里的一些答案,并且知道这是一个老话题,我仍然想回应那些声称放入cd ~文件的人.bashrc。虽然这有效,但这意味着每个交互式非登录 shell 都会.bashrc先读取。这意味着无论是第一个打开的终端,还是每个后续终端/bash 进程都是从初始“登录”终端生成的,您最终都会进入主目录。

您可以通过编辑命令来测试这一点.bashrccd ~退出 Windows 终端。然后再次启动 Ubuntu。您将进入主目录。现在,导航到该终端会话内的其他目录,然后执行“bash”。您最终将进入主目录,这可能不是您想要的。

如果您使用 Visual Studio 代码,也会发生同样的问题。在 VSC 中,您可以创建终端会话。许多人希望该会话在他们启动 VSC 的任何目录中打开(主要是他们正在处理的项目)。但是,这将执行命令,这.bashrc意味着您最终将进入主目录。

.bashrc适用于特定于 Bash shell 的命令。因此,将别名和其他与 Bash 相关的函数放入其中.bashrc是很好的。

放置 的更好位置cd ~是文件中.profile。这样,在初始终端 bash 启动时,它将执行cd ~中的命令.profile。如果您随后从其他目录启动 VSC,则当您在 VSC 中创建终端会话时,它将保留在您启动 VSC 的目录中,这是大多数程序员所期望的。

完成此操作并cd ~从 中删除后.bashrc,启动一个新的终端会话。您将进入主目录。然后,导航到另一个目录并输入“bash”。您将启动一个新的 bash 会话,但仍停留在您上次所在的目录中。

如果您在 Windows 终端内启动新的 Ubuntu 终端,您将回到主目录,因为这是一个全新的终端登录会话。

希望有帮助!

相关内容