如何让 rc shell 在 ubuntu 启动时读取 .rcrc?

如何让 rc shell 在 ubuntu 启动时读取 .rcrc?

我正在尝试使用rc作为我在 Ubuntu 中的登录 shell(使用 chsh)。我注意到它在启动时不读取 $HOME/.rcrc 文件。文档说,如果使用 *argv[0] == '-' 或 -l 标志作为登录 shell 调用,它会读取 .rcrc 文件,我可以通过直接通过$ rc -l. 或从 zsh执行它来验证这一点ARGV0=-rc /usr/bin/rc

但是,在登录时执行时,它不会读取 .rcrc 文件,并且 ps 输出表明 shell 名称只是“rc”而不是“-rc”。因此,我的问题是,如何让 /usr/bin/rc 在启动时读取 .rcrc?为什么 ubuntu 不在 shell 前加上“-”?是否有其他方法可以检测 shell 是否是登录 shell?

答案1

与 OS X 的终端不同,GUI 上的 Linux 终端仿真器通常默认不会打开登录 shell。

如果您按下CtrlAltF1并在命令行上登录,您将获得一个.rcrc将执行其命令的登录 shell。


在 Ubuntu 的终端中,转到编辑 » 个人资料首选项 » 标题和命令 » 以登录 shell 形式运行命令

或者,您的终端仿真器可能支持执行任意命令。使用/usr/bin/rc -l


您还可以创建一个简短的脚本,仅rc作为登录 shell 启动:

#!/bin/bash
exec -l /usr/bin/rc "$@"

这将开始bash执行脚本,并且脚本会将其完全替换为rc作为登录 shell 调用(-l参数),以及此脚本的所有其他参数。您还可以添加参数-c来清理环境。

另存为/usr/bin/rcl,使其可执行,并将相应的条目添加到/etc/shells

相关内容