Env*_*nvy 12 bash shell windows-10 windows-subsystem-for-linux windows-10-v1607
我已经为 Windows 10 安装了 Linux 子系统。它工作正常,但我想更改子系统的默认 shell 环境。
我做了sudo apt-get install fish然后chsh -s /usr/bin/fish。但是当我bash.exe在 Windows 中启动时,它总是启动 bash(我认为这是可以预测的)。
有谁知道改变这种行为的论据?
Mik*_*ail 12
自秋季创作者更新以来,您可以使用chsh设置默认外壳。如果您使用bash.exe命令运行 WSL,这仍然不起作用,但如果您使用命令运行 WSL,这将起作用ubuntu.exe。
此外,自 Fall Creators Update 以来,我们应该从Windows Store安装 WSL OS 。
设置zsh为默认外壳:
chsh -s /bin/zsh
Run Code Online (Sandbox Code Playgroud)
然后ubuntu.exe从命令提示符运行(或重新启动)。
由于 Linux 子系统是通过驻留在系统目录中的 bash.exe 启动的,因此您无法更改默认 shell 本身。
但是,您可以创建一个新的快捷方式,就像 bash 已经存在的快捷方式一样,并让它运行命令
%systemroot%\system32\bash -c /usr/bin/fish
Run Code Online (Sandbox Code Playgroud)
这样,您将立即运行鱼。
打开 bash,运行nano ~/.bashrc并将其粘贴到:
if [[ -t 1 && -x /usr/bin/zsh ]]; then
exec /usr/bin/zsh
fi
Run Code Online (Sandbox Code Playgroud)
只需将外壳更改为fish或任何您想要的。-x如果您重新安装 Bash,该检查很重要——您将无法在全新安装后打开它,因为该exec命令将失败,然后 Bash 就会关闭。
如果发生这种情况,请.bashrc在此处删除/重命名您的文件:
C:\Users\<USERNAME>\AppData\Local\lxss\home\<USERNAME>\.bashrc
Run Code Online (Sandbox Code Playgroud)
在-t我认为,检查是否stdout是开放的。不知道为什么这很重要,我从这篇文章中复制了它。
| 归档时间: |
|
| 查看次数: |
15879 次 |
| 最近记录: |