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 次 |
最近记录: |