考虑到 shell 中定义的环境变量可供 shell 的子进程使用。
当我们打开终端时,它会读取 .bashrc 并执行其命令。这意味着 .bashrc 可用于所有终端。
我想知道bashrc的环境变量是否适用于那些定期运行的脚本?即我们不手动打开终端来运行这些脚本。
如果我通过单击桌面图标来启动 QtCreator 会怎样? bashrc 的环境变量对该 QtCreator 进程可用吗?为什么?
如果没有,那么向那些不物理打开终端的脚本提供环境变量的方法是什么?
回答时请附上参考文献。
答案1
这里有几个标准化程度较差的组件。
通常,您的桌面环境读取您的内容.profile
,以便其子进程将继承其中定义的任何变量。
通常,您的桌面环境根本不读取.bashrc
(尽管例如 macOS 将每个新终端作为登录 shell 运行,因此如果 Bash 是您的登录 shell,则此时会读取其登录文件)。
目前尚不清楚“在计时器上运行”是什么意思。如果您运行cron
或的某些内容at
,它不会读取任何交互式启动文件(尽管您可以执行类似的操作,bash -i scriptname
如果您想强制它)。
就 Bash 而言.bashrc
,权威的参考文献是bash 文档。
定义系统范围变量的可移植位置是,/etc/profile
尽管某些平台也支持类似/etc/environment
.同样,$HOME/.profile
是为所有 shell 定义个人变量的地方。