Jake Nixon Asked: 2019-10-01 08:48:52 +0800 CST2019-10-01 08:48:52 +0800 CST 2019-10-01 08:48:52 +0800 CST 在运行 Ubuntu 的 Windows 终端中,如何将默认目录设为 ~ (/home/jake) 而不是 / (root)? 772 我从 Windows 10 内部的 Microsoft Store 安装了 Windows Terminal 和 Ubuntu(我不知道这是 WSL 版本 1 还是版本 2。wsl -l -v命令失败。)。 我的默认目录设置为正确的目录,但它总是向 root 开放。我该如何修复这个配置? command-line windows directory windows-subsystem-for-linux json 3 个回答 Voted Best Answer Kulfy 2019-10-03T03:07:39+08:002019-10-03T03:07:39+08:00 这是Windows Terminal 中Microsoft Terminal 的 GitHub 页面上提出的问题,作为 wsl profile #592 的 startingDirectory 设置问题。不尊重事物是对某些事物的爱好。 实际上,startingDirectoryWindows Terminal 似乎在 WSL fs 路径下无法正常工作,因为该问题并非特定于$HOME,它存在于/. 虽然user3140225 的方法是一个好的开始,但根据DHowett-MSFT 的评论: 这也是在您的机器上使用 bash 的所有其他事物中获得奇怪和意外行为的好方法。? 由于在 Ubuntu 的配置文件中您提供了命令行wsl.exe -d Ubuntu。此命令行调用 WSL 并要求它启动“Ubuntu”,这是在当前目录中完成的,即如果您wsl.exe -d Ubuntu在 Windows 桌面中运行,Ubuntu 将在 Windows 桌面上启动。 作为一种解决方法,您可以修改命令行并使用以下方法之一。 由于 WSL 专门用于 Linux,因此可以预期Tilde 扩展。因此,您可以在命令行中指定“起始目录”,并将以下内容作为命令行的值。 wsl.exe ~ -d ubuntu 安装 Ubuntu 应用程序时,它会自动注册ubuntu命令。因此,ubuntu命令将调用 Ubuntu App。这样做的好处是它总是从$HOME. 因此,您可以将命令行的值更改为 ubuntu 注意:如果您使用的是 Ubuntu 18.04 或 16.04 应用程序,则命令会相应变化。以上仅适用于 Ubuntu 应用程序。 如果您对更改命令行感到不舒服,您仍然可以通过修改startDirectory为 "startingDirectory":"//wsl$/Ubuntu/home/jake/" 学分: caksoylar 的评论 BeastOfCaerbannog 2019-10-02T12:50:17+08:002019-10-02T12:50:17+08:00 您可以执行以下操作: 打开 WSL 并~/.bashrc使用以下命令编辑文件nano: nano ~/.bashrc 在文件底部添加以下行: cd ~ 按Ctrl+O后按Ctrl+保存并关闭文件X。 最后,重启 WSL。 bolski 2021-07-30T13:25:35+08:002021-07-30T13:25:35+08:00 在这里看到一些答案,并且知道这是一个旧线程,我仍然想回应那些说在.bashrc文件中放入“cd ~”的人。虽然这样可行,但这意味着每个交互式非登录 shell 都会.bashrc先读取。这意味着无论是打开的第一个终端,还是从初始“登录”终端产生的每个后续终端/bash 进程,您都将始终位于主目录中。 您可以通过编辑.bashrc将“cd ~”命令放入其中来测试它。退出 Windows 终端。然后再次启动 Ubuntu。您将位于主目录中。现在,导航到该终端会话中的不同目录,然后执行“bash”。你最终会进入你的主目录,这可能不是你想要的。 如果您使用 Visual Studio 代码,也会出现同样的问题。在 VSC 中,您可以创建终端会话。许多人希望该会话在他们启动 VSC 的任何目录中打开(主要是他们正在处理的项目)。但是,这将执行命令,.bashrc这意味着您最终将进入主目录。 .bashrc适用于特定于 Bash shell 的命令。因此,将别名和其他 Bash 相关函数放入其中.bashrc是好的。 放置“cd ~”的更好位置是在.profile文件中。这样,在初始终端 bash 启动时,它将在.profile. 如果您随后从不同的目录启动 VSC,当您在 VSC 中创建终端会话时,它将保留在您启动 VSC 的目录中,这是大多数程序员所期望的。 完成此操作并从中删除“cd ~”后.bashrc,启动一个新的终端会话。您将在您的主目录中。然后,导航到不同的目录并键入“bash”。您将开始一个新的 bash 会话,但仍保留在上次所在的目录中。 如果您在 Windows 终端中启动一个新的 Ubuntu 终端,您将回到您的主目录,因为它是一个全新的终端登录会话。 希望有帮助!
这是Windows Terminal 中Microsoft Terminal 的 GitHub 页面上提出的问题,作为 wsl profile #592 的 startingDirectory 设置问题。不尊重事物是对某些事物的爱好。
实际上,
startingDirectory
Windows Terminal 似乎在 WSL fs 路径下无法正常工作,因为该问题并非特定于$HOME
,它存在于/
.虽然user3140225 的方法是一个好的开始,但根据DHowett-MSFT 的评论:
由于在 Ubuntu 的配置文件中您提供了命令行
wsl.exe -d Ubuntu
。此命令行调用 WSL 并要求它启动“Ubuntu”,这是在当前目录中完成的,即如果您wsl.exe -d Ubuntu
在 Windows 桌面中运行,Ubuntu 将在 Windows 桌面上启动。作为一种解决方法,您可以修改命令行并使用以下方法之一。
由于 WSL 专门用于 Linux,因此可以预期Tilde 扩展。因此,您可以在命令行中指定“起始目录”,并将以下内容作为命令行的值。
安装 Ubuntu 应用程序时,它会自动注册
ubuntu
命令。因此,ubuntu
命令将调用 Ubuntu App。这样做的好处是它总是从$HOME
. 因此,您可以将命令行的值更改为注意:如果您使用的是 Ubuntu 18.04 或 16.04 应用程序,则命令会相应变化。以上仅适用于 Ubuntu 应用程序。
如果您对更改命令行感到不舒服,您仍然可以通过修改
startDirectory
为学分: caksoylar 的评论
您可以执行以下操作:
打开 WSL 并
~/.bashrc
使用以下命令编辑文件nano
:在文件底部添加以下行:
按Ctrl+O后按Ctrl+保存并关闭文件X。
最后,重启 WSL。
在这里看到一些答案,并且知道这是一个旧线程,我仍然想回应那些说在
.bashrc
文件中放入“cd ~”的人。虽然这样可行,但这意味着每个交互式非登录 shell 都会.bashrc
先读取。这意味着无论是打开的第一个终端,还是从初始“登录”终端产生的每个后续终端/bash 进程,您都将始终位于主目录中。您可以通过编辑
.bashrc
将“cd ~”命令放入其中来测试它。退出 Windows 终端。然后再次启动 Ubuntu。您将位于主目录中。现在,导航到该终端会话中的不同目录,然后执行“bash”。你最终会进入你的主目录,这可能不是你想要的。如果您使用 Visual Studio 代码,也会出现同样的问题。在 VSC 中,您可以创建终端会话。许多人希望该会话在他们启动 VSC 的任何目录中打开(主要是他们正在处理的项目)。但是,这将执行命令,
.bashrc
这意味着您最终将进入主目录。.bashrc
适用于特定于 Bash shell 的命令。因此,将别名和其他 Bash 相关函数放入其中.bashrc
是好的。放置“cd ~”的更好位置是在
.profile
文件中。这样,在初始终端 bash 启动时,它将在.profile
. 如果您随后从不同的目录启动 VSC,当您在 VSC 中创建终端会话时,它将保留在您启动 VSC 的目录中,这是大多数程序员所期望的。完成此操作并从中删除“cd ~”后
.bashrc
,启动一个新的终端会话。您将在您的主目录中。然后,导航到不同的目录并键入“bash”。您将开始一个新的 bash 会话,但仍保留在上次所在的目录中。如果您在 Windows 终端中启动一个新的 Ubuntu 终端,您将回到您的主目录,因为它是一个全新的终端登录会话。
希望有帮助!