我有一台托管的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。所有其他外壳将保持不变。