【问题标题】:Changing default shell in Linux [closed]在 Linux 中更改默认 shell [关闭]
【发布时间】:2012-10-24 09:15:37
【问题描述】:

如何更改默认外壳? env 命令当前表示:

SHELL=/bin/tcsh

我想把它改成 Bash。

【问题讨论】:

  • 这是个好问题,但它可能更适合 Linux QA 站点。
  • 在 /etc/passwd 中设置

标签: linux bash shell environment tcsh


【解决方案1】:

试试linux命令chsh

详细命令为chsh -s /bin/bash。 它会提示您输入密码。 您的默认登录 shell 现在是 /bin/bash您必须退出并重新登录才能看到此更改。

以下内容来自手册页:

chsh 命令更改用户登录 shell。这决定了 姓名 用户初始登录命令。普通用户只能更改 登录shell为她自己的帐户,超级用户可以更改登录名 任何帐户的外壳

此命令将永久更改默认登录 shell。

注意:如果您的用户帐户是远程的,例如 Kerberos 身份验证(例如 Enterprise RHEL),那么您将无法使用 chsh

【讨论】:

  • chsh: can only change local entries; use ypchsh instead。那么 ypchsh 没有任何-s 选项
  • @ShaktiMalik 我相信配置文件是/etc/passwd,但我没有仔细检查。
  • 您必须退出并重新登录才能看到此更改。
  • 就我而言,我有 root 访问权限,但不想弄乱实际主机上的任何配置。我将exec /bin/bash 添加到~/.profile,这使我可以直接登录bash 而无需对服务器进行任何更改。 (原来的默认 shell 只是 /bin/sh
  • @BCqrstoO 谢谢你。但是如果你在 bash 中输入exit 会怎样?您是直接注销服务器还是退出 bash 并进入 sh 和另一个 exit 需要注销服务器?
【解决方案2】:

您可以直接为特定用户更改密码文件或使用以下命令

chsh -s /usr/local/bin/bash username

然后退出再登录

【讨论】:

  • 在调用上述命令之前尝试which bash 可能是个好主意;您的里程可能因位置而异。就我而言,它是在/bin/bash 中找到的
  • 我还可以补充一点,chsh 命令是util-linux 包的一部分;和chsh -s $(which bash) $USER 的结果应该和上面一样。
  • 还有-l选项:“打印shell列表”。
  • 我是chsh -s /bin/bash username
  • 谢谢!这有助于我尝试为其他用户更改它
【解决方案3】:

你应该在/etc 的某个地方有一个“骨架”,可能是/etc/skeleton,或者检查默认设置,可能是/etc/default 或其他东西。这些是定义在登录期间设置的标准环境变量的脚本。

如果只是为了您自己的帐户:检查(隐藏)文件~/.profile~/.login。或者生成它们,如果它们不存在。这些也由登录过程评估。

【讨论】:

  • 加 1 用于专门回答问题(默认 Shell)。在 Red Hat Linux 上,它在 /etc/default/useradd 中指定
  • @geedoubleya 你能指定默认和登录shell有什么区别吗?
  • 嗨@Betlista 默认shell是新用户登录shell时使用的shell,除非提供特定shell作为参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
  • 2015-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多