![更改登录 shell](https://linux22.com/image/991344/%E6%9B%B4%E6%94%B9%E7%99%BB%E5%BD%95%20shell.png)
如果我将我的 shell 更改为chsh
我自己编写的 shell,它需要执行哪些脚本?我已经尝试更改为我自己的 shell,令人惊讶的是,它工作正常,没有错误消息。现在这是否意味着登录 shell 自己决定运行哪些脚本,并且没有登录 shell 必须运行的脚本?
我认为.login 或.aliases 或类似程序一直在运行。
答案1
该profile
文件始终由登录 shell 运行,如果您希望其他脚本由登录 shell 调用,请在profile
答案2
取决于你的外壳的设计。
它符合 POSIX 标准吗?
如果是,则您的 shell 需要ENV
在任何交互式会话开始时读取环境变量并读取/执行变量引用的文件的内容ENV
。根据标准,无需读取其他文件。就启动时读取文件而言,这是 POSIX 一致性的最低要求。
那么定制怎么样?
问题是,如今大多数 shell 在启动会话时都使用特定文件来读取/获取/执行。不同会话类型的文件有所不同。例如,在启动登录交互会话时bash
,获取文件/etc/profile
和~/.bash_profile
、~/.bash_login
、中的一个~/.profile
(按顺序第一个可用)。大多数流行的 shell 也这样做,但这同样是一种设计决策,而不是标准。