将bash安装为默认shell

你所使用的 BSD 系统、Solaris 或其他 Unix 变体并没有将 bash 作为默认 shell,每次都需要手动启动 bash,你现在希望将 bash 设置为默认 shell。

解决方案

先确定已经安装了 bash。在命令行中输入 bash –version。如果获得了版本输出,则说明 bash 已经安装好了:

$ bash --version
GNU bash, version 3.00.16(1)-release (i386-pc-solaris2.10)
Copyright (C) 2004 Free Software Foundation, Inc.
$

如果没有看到版本号,可能是系统路径中缺少了相应的目录。在一些系统中,chsh -lcat /etc/shells 可以给出一份可用的 shell 清单。否则,可以询问系统管理员 bash 的安装位置,或者是否可以安装 bash。

在 Linux 系统中,chsh -l 会提供一份可用的 shell 清单;而在 BSD 中,会打开编辑器并允许修改设置。在 macOS 中,-l 并非 chsh 的有效选项,执行 chsh 会打开编辑器并允许修改设置,chpass -s shell 可以修改用户所用的 shell。

如果已经安装了 bash,可以用 chsh -s 命令修改默认 shell,例如 chsh -s /bin/bash。如果修改失败,可以再试试 chshpasswd -epasswd -l、chpass 或者 usermod -s /usr/bin/ bash。要是还不行,那就得咨询系统管理员了,可能需要管理员编辑 /etc/passwd 文件。在多数系统中,/etc/passwd 包含如下内容:

cam:pK1Z9BCJbzCrBNrkjRUdUiTtFOh/:501:100:Cameron Newham:/home/cam:/bin/bash
cc:kfDKDjfkeDJKJySFgJFWErrElpe/:502:100:Cheshire Cat:/home/cc:/bin/bash

作为 root,你可以编辑密码文件每行的最后一个字段,将其修改成想要选用的 shell 的完整路径。如果系统中有 vipw 命令,则应该使用该命令,确保密码文件的一致性。

有些系统不允许将未出现在/etc/shells 中的 shell 作为登录 shell。如果 bash 不在该文件中,那就只能让系统管理员将其添加进去了。

讨论

有些操作系统(尤其是各种 BSD Unix)通常会将 bash 放在 /usr 分区。在这种系统中更改 root shell 时可得三思。如果系统出现引导故障,而你又需要在 /usr 分区挂载前进行处理,那就碰上真正的麻烦了:root 账户没有 shell 可用。因此,最好不要改动 root 账户的默认 shell。至于普通用户的默认 shell,完全可以改成 bash。除非绝对必要,否则使用 root 账户不是什么好做法,这一点不用说你也明白。尽可能使用普通账户。配合 sudo 这类命令,你应该极少会用到 root shell。

如果上面提到的这些方法都无效,还可以使用 exec 将当前的登录 shell 替换成 bash,但胆小的用户还是别这么做了。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!