我想在Windows 10的sub linux下将我的shell更改为zsh。我在谷歌上说的每一个地方,我都应该使用
chsh /bin/zsh
但注销并登录后,shell仍然是bash。
然而,vi /etc/passwd
表明
root:x:0:0:root:/root:/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
libuuid:x:100:101::/var/lib/libuuid:
syslog:x:101:104::/home/syslog:/bin/false
messagebus:x:102:106::/var/run/dbus:/bin/false
landscape:x:103:109::/var/lib/landscape:/bin/false
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
pollinate:x:105:1::/var/cache/pollinate:/bin/false
qq:x:1000:1000:"",,,:/home/qq:/bin/zsh
colord:x:106:112:colord colour management daemon,,,:/var/lib/colord:/bin/false
为什么chsh在win10的bash中不起作用?
答案1
当他们称其为“Windows 上 Ubuntu 上的 Bash”时,他们是认真的 - 快捷方式只是直接运行 Bash 可执行文件。
如果您以其他方式访问系统(通过 SSH,或通过运行login
或显示管理器),那么它将/etc/passwd
照常读取。
更简单地说,您可以编辑您的内容.bashrc
来伪造它。添加:
if [ -t 1 ]
then
exec zsh
fi
到最后。
您还可以创建新的 Windows 快捷方式(或修改现有的快捷方式)来生成其他内容 -bash.exe -c /usr/bin/zsh
应该也能很好地工作。
有报告了一个关于此的错误。我不认为这是一个高优先级(而且也不是真的一个错误),但是任何这些解决方法都会让你非常接近。