如何为 Linux 更改 Windows 子系统中的默认目录
How to change default directory in Windows Subsystem for Linux
我正在设置我的开发环境,所以我刚刚为 Linux 安装了 Windows 子系统,它似乎总是在我的 Windows 主目录中打开一个新终端 - /mnt/c/Users/dl
并且我正在尝试将其默认设置为 linux 主目录 - /home/dl
.
我查看了 /etc/passwd
的 Linux 子系统中的主目录,并且设置正确:
dl:x:1000:1000:,,,:/home/dl:/bin/bash
然后我发现了这个solution,但它似乎没有任何影响:
// Set starting directory
"startingDirectory": "\\wsl$\Ubuntu\home\dl\"
我知道我可以 运行 cd ~
在我的点文件中(这是我目前正在使用的),但我正在寻找 /home/dl
的方法只是默认值,不需要 cd ~
。这可能吗?
startingDirectory 应该是 windows 路径,而不是 nix 路径。尝试 D:\Folder\SubFolder 而不是
参考这个 link,对我有用
您应该只为 WSL(在本例中为 Ubuntu)终端会话更改 startingDirectory
。
- 通过CTRL+SHIFT+,[=39打开
settings.json
=]
- 确保您在
profiles/list/name: "Ubuntu"
下修改 startingDirectory
示例如下(斜线需要转义):
....
{
"guid": "{2c4de342-xxx-xxx-xxx-2309a097f518}",
"hidden": false,
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl",
"startingDirectory": "\\wsl$\Ubuntu\home\windows_username_in_lower_case"
},
....
关于 startingDirectory
的文档,包括默认值和预期值。
在 settings.json
中,您还将找到 json 模式的解释,即 here
如果您需要知道如何或在何处编辑 Windows 终端 settings/preferences:https://docs.microsoft.com/en-us/windows/terminal/get-started
使用 WSL 更改主目录的方法与 Linux 中的相同:
- 输入bash
- 键入命令 sudo vim /etc/passwd
- 找到您的帐户行,可能如下所示:
shadyar:x:1000:1000:"",:/home/shadyar:/bin/bash
- 使用 WSL
将上面的主目录 /home/shadyar 更改为新目录
注意:如果要将Windows目录设置为主目录,需要在其前面添加/mnt/,如/mnt/c表示C:/,/mnt/d表示D:/等
- 保存文件并退出 vim 输入 :wq 并按 Enter
- 退出 bash 并重新启动
- 要进行测试,请使用命令:
CD~
密码
第 1 步:打开 windows 命令提示符并键入“bash”
或直接打开 Linux 应用程序。
第 2 步:键入如下所示的路由:/mnt/c/Users/HP/..(您可以在此处输入所需的目录)。
例如:/mnt/c/Users/HP/Documents,这样你就进入了Documents.
对于 WSL2 Ubuntu,语法现在应该与 json 中的以下示例匹配:
"guid": "{2d5ef231-38b7-51cf-b940-2309a097f644}",
"hidden": false,
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl",
"startingDirectory": "//wsl$/Ubuntu/",
"tabTitle": "Ubuntu"
To start in /: "startingDirectory": "//wsl$/Ubuntu/",
To start in /root: "startingDirectory": "//wsl$/Ubuntu/root/",
To start in /home: "startingDirectory": "//wsl$/Ubuntu/home/",
在Windows10 21H2 或更高版本和Windows11 中,现在要简单得多。根据 the Microsoft Doc:
On newer versions of Windows, startingDirectory
can accept Linux-style paths.
这意味着您可以简单地使用:
"startingDirectory": "/home/yourusername"
Windows 目录结构不需要任何前缀,也不需要转义反斜杠。只是普通的旧 Linux 正斜杠符号。
这适用于 WSL1 和 WSL2。
注意:我尝试使用“~”但失败了。可能有一些方法可以使用 {$USERPROFILE},但还没有尝试过。
此处的其他答案(尤其是来自@TomBoland 的 )非常适合从任意目录开始,但您问题中的示例是从您的主目录开始。最简单的方法就是创建 "commandline"
属性 或将 wsl ~
更改为 wsl ~
。这是 wsl.exe
的未记录标志,它必须是第一个参数(例如 wsl ~ -u root
)。
当前和最近的 Windows 终端版本
由于 Windows 终端现在有一个用于设置的 GUI,您只需在 ->常规->命令行[=49] 中编辑您的配置文件以指向 wsl ~
=]设置。
较旧的 Windows 终端版本,或者如果您想手动编辑
如果您直接编辑 settings.json
(目前在 %userprofile%\AppData\Local\Packages\MicrosoftWindowsTerminal...\LocalState\settings.json
中找到,但这可能会改变)...
删除 "source"
属性并将其替换为 "commandline"
:
"guid": "{2d5ef231-38b7-51cf-b940-2309a097f644}",
"hidden": false,
"name": "Ubuntu",
//"source": "Windows.Terminal.Wsl",
"commandline": "wsl ~",
"startingDirectory": "//wsl$/Ubuntu/",
"tabTitle": "Ubuntu"
此外,为了好玩,这里有另一种(hacky)方法可以将 WSL 打开到 ~
/$HOME
(无需像其他答案那样进行硬编码)。这绝对不需要因为它更容易使用wsl ~
,但是:
wsl -e sh -c 'cd $HOME; exec $SHELL'
这会启动 sh
,将目录更改为 $HOME
,然后 exec
的 $SHELL
替换 sh
。
无需执行任何操作,只需在设置下打开 Ubuntu 的配置文件,然后更新命令行以添加以下选项
C:\Windows\system32\wsl.exe -d Ubuntu --cd ~
如果您将 Windows Terminal 与 WSL 一起使用,那么最简单的解决方案是通过“设置”菜单配置起始目录:
然后:
我正在设置我的开发环境,所以我刚刚为 Linux 安装了 Windows 子系统,它似乎总是在我的 Windows 主目录中打开一个新终端 - /mnt/c/Users/dl
并且我正在尝试将其默认设置为 linux 主目录 - /home/dl
.
我查看了 /etc/passwd
的 Linux 子系统中的主目录,并且设置正确:
dl:x:1000:1000:,,,:/home/dl:/bin/bash
然后我发现了这个solution,但它似乎没有任何影响:
// Set starting directory
"startingDirectory": "\\wsl$\Ubuntu\home\dl\"
我知道我可以 运行 cd ~
在我的点文件中(这是我目前正在使用的),但我正在寻找 /home/dl
的方法只是默认值,不需要 cd ~
。这可能吗?
startingDirectory 应该是 windows 路径,而不是 nix 路径。尝试 D:\Folder\SubFolder 而不是
参考这个 link,对我有用
您应该只为 WSL(在本例中为 Ubuntu)终端会话更改 startingDirectory
。
- 通过CTRL+SHIFT+,[=39打开
settings.json
=] - 确保您在
profiles/list/name: "Ubuntu"
下修改
startingDirectory
示例如下(斜线需要转义):
....
{
"guid": "{2c4de342-xxx-xxx-xxx-2309a097f518}",
"hidden": false,
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl",
"startingDirectory": "\\wsl$\Ubuntu\home\windows_username_in_lower_case"
},
....
关于 startingDirectory
的文档,包括默认值和预期值。
在 settings.json
中,您还将找到 json 模式的解释,即 here
如果您需要知道如何或在何处编辑 Windows 终端 settings/preferences:https://docs.microsoft.com/en-us/windows/terminal/get-started
使用 WSL 更改主目录的方法与 Linux 中的相同:
- 输入bash
- 键入命令 sudo vim /etc/passwd
- 找到您的帐户行,可能如下所示:
shadyar:x:1000:1000:"",:/home/shadyar:/bin/bash - 使用 WSL
将上面的主目录 /home/shadyar 更改为新目录 注意:如果要将Windows目录设置为主目录,需要在其前面添加/mnt/,如/mnt/c表示C:/,/mnt/d表示D:/等 - 保存文件并退出 vim 输入 :wq 并按 Enter
- 退出 bash 并重新启动
- 要进行测试,请使用命令:
CD~
密码
第 1 步:打开 windows 命令提示符并键入“bash” 或直接打开 Linux 应用程序。
第 2 步:键入如下所示的路由:/mnt/c/Users/HP/..(您可以在此处输入所需的目录)。
例如:/mnt/c/Users/HP/Documents,这样你就进入了Documents.
对于 WSL2 Ubuntu,语法现在应该与 json 中的以下示例匹配:
"guid": "{2d5ef231-38b7-51cf-b940-2309a097f644}",
"hidden": false,
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl",
"startingDirectory": "//wsl$/Ubuntu/",
"tabTitle": "Ubuntu"
To start in /: "startingDirectory": "//wsl$/Ubuntu/",
To start in /root: "startingDirectory": "//wsl$/Ubuntu/root/",
To start in /home: "startingDirectory": "//wsl$/Ubuntu/home/",
在Windows10 21H2 或更高版本和Windows11 中,现在要简单得多。根据 the Microsoft Doc:
On newer versions of Windows,
startingDirectory
can accept Linux-style paths.
这意味着您可以简单地使用:
"startingDirectory": "/home/yourusername"
Windows 目录结构不需要任何前缀,也不需要转义反斜杠。只是普通的旧 Linux 正斜杠符号。
这适用于 WSL1 和 WSL2。
注意:我尝试使用“~”但失败了。可能有一些方法可以使用 {$USERPROFILE},但还没有尝试过。
此处的其他答案(尤其是来自@TomBoland 的 "commandline"
属性 或将 wsl ~
更改为 wsl ~
。这是 wsl.exe
的未记录标志,它必须是第一个参数(例如 wsl ~ -u root
)。
当前和最近的 Windows 终端版本
由于 Windows 终端现在有一个用于设置的 GUI,您只需在 ->常规->命令行[=49] 中编辑您的配置文件以指向 wsl ~
=]设置。
较旧的 Windows 终端版本,或者如果您想手动编辑
如果您直接编辑 settings.json
(目前在 %userprofile%\AppData\Local\Packages\MicrosoftWindowsTerminal...\LocalState\settings.json
中找到,但这可能会改变)...
删除 "source"
属性并将其替换为 "commandline"
:
"guid": "{2d5ef231-38b7-51cf-b940-2309a097f644}",
"hidden": false,
"name": "Ubuntu",
//"source": "Windows.Terminal.Wsl",
"commandline": "wsl ~",
"startingDirectory": "//wsl$/Ubuntu/",
"tabTitle": "Ubuntu"
此外,为了好玩,这里有另一种(hacky)方法可以将 WSL 打开到 ~
/$HOME
(无需像其他答案那样进行硬编码)。这绝对不需要因为它更容易使用wsl ~
,但是:
wsl -e sh -c 'cd $HOME; exec $SHELL'
这会启动 sh
,将目录更改为 $HOME
,然后 exec
的 $SHELL
替换 sh
。
无需执行任何操作,只需在设置下打开 Ubuntu 的配置文件,然后更新命令行以添加以下选项
C:\Windows\system32\wsl.exe -d Ubuntu --cd ~
如果您将 Windows Terminal 与 WSL 一起使用,那么最简单的解决方案是通过“设置”菜单配置起始目录:
然后: