使用用户安装的shell?

ash*_*ash 4 linux zsh shell chsh pam

如何将我的 shell 更改为安装在我的主目录中的 shell?我在我的主目录中安装了一个新的 zsh,它被选中:

>> which zsh
>> /home/myname/bin/zsh
Run Code Online (Sandbox Code Playgroud)

它没有在 /etc/shells 中列出(也不会,因为我没有权限),那么我该如何安装呢?

chsh -s $(which zsh) myname
Changing shell for myname
Password: 
chsh: "/home/myname/bin/zsh" is not listed in /etc/shells
chsh: use -l option to see list
Run Code Online (Sandbox Code Playgroud)

mgo*_*ven 5

重点/etc/shells是让管理员可以控制哪些用户设置为他们的 shell。因此,设置未列出的外壳/etc/shells将是一个安全漏洞。最好的解决方案是要求管理员在系统范围内安装 zsh,但如果这不可能,您唯一的选择是配置当前的 shell(我假设是 bash)来执行您的自定义 shell。您可以通过添加以下内容来做到这一点~/.bash_profile(这只会影响登录 shell,而~/.bashrc也会影响可能会破坏脚本的非登录 shell)。

exec ~/bin/zsh
Run Code Online (Sandbox Code Playgroud)