dash 有非交互式非登录 rc 文件吗?我已阅读手册页,其中推荐了.profile
登录 shell 和$ENV
交互式 shell 的环境变量。
是否有任何针对非交互式非登录 shell 运行的内容,例如zsh
的zshenv
文件或bash
的$BASH_ENV
环境变量? Bourne shell 也有等效的文件吗?
到目前为止我能想到的最好的办法(虽然一点也不理想,因为它需要我编辑每个脚本)是编辑 shebang,如下所示:
#!/bin/sh /path/to/script
f
其中/path/to/script
包含
f() { echo "/path/to/script"; }
答案1
典型的 shell 没有为非交互式 shell 读取的 rc 文件。
.profile
读取由以argv[0]
开头的标识的登录 shell -
。
$ENV
由交互式 POSIX shell 读取,如果尚未设置,则 shell 使用它自己的默认值。这是.kshrc
为了ksh
、.bashrc
为了bash
、.shrc
为了较新版本的Bourne Shell
.
然而,Dash 没有定义默认值$ENV
,因此通常不会读取它,即使在交互模式下也是如此。