我正在尝试使用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
。