我有一台托管的Debian服务器。当我通过ssh登录时,我遇到了sh环境。如何更改它以便在bash环境中启动?
我有一台托管的Debian服务器。当我通过ssh登录时,我遇到了sh环境。如何更改它以便在bash环境中启动?
Answers:
您编辑/etc/passwd
最后一个条目是默认外壳的位置。做吧/bin/bash
。
另外,您可以更改系统默认值,即/bin/sh
不进行bash操作。
/bin/sh
是/bin/dash
。值得的是,其他两个答案是相同的,并且通过不同的方式达到了相同的目的。随你。
/etc/passwd
不建议手动编辑。编辑错误可能会中断所有用户的登录,从而需要恢复媒体或引导至单用户模式进行修复。有诸如usermod
更改之类的工具/etc/passwd
。
/etc/passwd
。
/bin/bash
为/bin/sh
相同与执行它--posix
,这可能有不良后果。
/bin/bash
这些年来,我一直在所有机器上使用shell作为我的外壳。您需要一个更具体的论据。
/bin/sh
最新Ubuntu版本中的默认系统外壳配置为/bin/dash
。通过简单地运行以下命令:
sudo dpkg-reconfigure dash
您可以将其更改回旧的默认设置/bin/bash
。
这样,您可以在bash
不更改任何用户设置(no chsh
或usermod
)的情况下获得具有交互式shell的预期效果,并且它将对当前将shell设置为的所有用户有效/bin/sh
。
这只有一个小缺点:Ubuntu引导时间可能会略有增加,因为dash
加载所需的内存更少且运行速度稍快(难怪-功能如此有限)。但是我认为要衡量这种影响会相当困难,尤其是对于托管环境。
另外,有时看到令人烦恼的Shell脚本无法正常工作,因为它们使用了某些bash
不支持的高级功能dash
。使用此配方将确保不会发生这种情况。
有关更多信息,请参见Ubuntu Wiki关于此问题。
/bin/sh
用作POSIX兼容shell脚本的解释器-它不一定是最好的交互式shell;如果要bash
成为系统外壳,则应使用chsh
或适当的adduser
调用来设置首选的登录外壳。dpkg-reconfigure
如果userA需要zsh而userB需要bash并且都坚持将/ bin / sh作为其默认shell,则使用是一个不好的选择。
zsh
,bash
则将userB 拥有。如果userC配置为sh
,则他将拥有bash
,这仍然是新用户当前的Ubuntu默认设置
dpkg-reconfigure zsh
先设置zsh
为/ bin / sh,然后再dpkg-reconfigure dash
设置dash
为/ bin / sh,这有点像死锁;我主要是说最好将登录shell设置为要使用的shell,而不是通过箍使/ bin / sh成为一个好的登录shell。
dpkg-reconfigure dash
可以sh
指出bash
,而不是残废dash
。所有其他外壳将保持不变。