如何为Windows更改Linux Susbsystem的默认Shell


10

我已经为Windows 10安装了Linux子系统。它可以正常工作,但是我想更改该子系统的默认外壳环境。

我做了sudo apt-get install fish,然后chsh -s /usr/bin/fish。但是,当我bash.exe在Windows中启动时,它总是会启动bash(我认为这是可以预见的)。

有谁知道改变这种行为的理由?


当您开始时,bash.exe您显然是在明确地开始bash。我不熟悉Windows 10中的Linux子系统,但是我希望有某种方法可以启动“ Linux” shell,而无需显式启动一个特定的shell。
CVn

您是否尝试过丑陋的bashrc或bashprofile版本来重新路由交互式bash调用来钓鱼?isatty && exec fish当您完全没有实际的解决方案时,添加这样的一行可能值得一试。
A. Loiseau

Answers:


6

由于Linux子系统是通过驻留在系统目录中的bash.exe启动的,因此您无法更改默认的shell。

但是,您可以创建一个新的快捷方式,例如已经存在于bash的快捷方式,并使其运行命令。

%systemroot%\system32\bash -c /usr/bin/fish

这样,您将立即开始钓鱼。


1
我曾经%systemroot%\system32\bash.exe ~ -c /bin/zsh在我的主目录中打开ZSH。
大卫·派森(DavidPärsson)

或者,将快捷方式中的“开始于”字段设置为%userprofile%在主目录中启动外壳程序。
dOxxx '16

@konqui这不会破坏任何其他外壳。这是启动它的新捷径。您的重击效果很好
Sami Kuhmonen

@SamiKuhmonen关于新的快捷方式没有任何评论-我现在纠正了它,我可以忍受这个答案。
konqui

9

Fall Creators Update开始,您可以chsh用来设置默认外壳。如果您使用bash.exe命令运行WSL,这仍然不起作用,但是如果您使用命令运行WSL,这仍然起作用ubuntu.exe

另外,自Fall Creators Update以来,我们应该从Windows Store安装WSL OS 。

设置zsh为默认外壳:

chsh -s /bin/zsh

然后ubuntu.exe从命令提示符下运行(或重新启动)。


5

打开bash,运行nano ~/.bashrc并将其粘贴到:

if [[ -t 1 && -x /usr/bin/zsh ]]; then
    exec /usr/bin/zsh
fi

只需将shell更改为fish或任何您想要的即可。-x如果您重新安装Bash,则该检查很重要-全新安装exec后将无法打开它,因为该命令将失败,然后Bash会关闭。

如果发生这种情况,请.bashrc在此处删除/重命名文件:

C:\Users\<USERNAME>\AppData\Local\lxss\home\<USERNAME>\.bashrc

-t认为,检查是否stdout是开放的。不确定为什么这很重要,我从本文复制了它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.