我有一个托管的 Debian 服务器。当我通过 ssh 登录时,系统会显示一个 sh 环境。我该如何更改它以便在 bash 环境中启动?
答案1
作为普通用户,你可以使用以下chsh
命令更改默认登录 shell。以下是示例:
chsh -s /bin/bash
另一个选择是以 root 身份使用 usermod:
usermod -s /bin/bash username
答案2
如果您尝试使用共享帐户(无论出于何种原因)并且无法更改默认 shell,那么您可以运行
ssh -t <user@hostname> bash -l
如果你需要将你的环境与其他 shell 隔离,那么你可以先运行该 shell;例如
ssh -t <user@hostname> ksh -c bash -l
答案3
你编辑/etc/passwd
的最后一项是默认 shell。将其设为/bin/bash
。
或者,你可以改变系统默认的/bin/sh
非 bash 状态。
答案4
最近的 Ubuntu 版本中的默认系统 shell/bin/sh
配置为/bin/dash
。只需运行以下命令:
sudo dpkg-reconfigure dash
您可以将其改回旧的默认值/bin/bash
。
通过这种方式,您可以实现具有bash
交互式 shell 的预期效果,而无需更改任何用户设置(无chsh
或usermod
),并且它将适用于当前将 shell 设置为 的所有用户/bin/sh
。
这样做只有一个小缺点:Ubuntu 启动时间可能会略有增加,因为dash
加载占用的内存更少,运行速度也略快(这也难怪——它的功能非常有限)。但我认为衡量这种影响会相当困难,尤其是对于托管环境。
另外,有时看到 shell 脚本无法正常工作也很烦人,因为它们使用了一些bash
不支持的高级功能dash
。使用此配方将确保不会发生这种情况。
有关更多信息,请参阅 Ubuntu wiki这个问题。