当我通过 ssh 进入我的服务器时,如何从 bash 中启动?

当我通过 ssh 进入我的服务器时,如何从 bash 中启动?

我有一个托管的 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 的预期效果,而无需更改任何用户设置(无chshusermod),并且它将适用于当前将 shell 设置为 的所有用户/bin/sh

这样做只有一个小缺点:Ubuntu 启动时间可能会略有增加,因为dash加载占用的内存更少,运行速度也略快(这也难怪——它的功能非常有限)。但我认为衡量这种影响会相当困难,尤其是对于托管环境。

另外,有时看到 shell 脚本无法正常工作也很烦人,因为它们使用了一些bash不支持的高级功能dash。使用此配方将确保不会发生这种情况。

有关更多信息,请参阅 Ubuntu wiki这个问题

相关内容