我有一个可执行脚本,我想在每次登录或打开新的交互式 shell 时运行该脚本。我添加了此可执行文件的路径,.profile
并通过添加此行来获取它.profile
source $HOME/bin/wrapper
重新启动后,该脚本未运行。
.profile
为什么即使重新启动 Fedora 后 bash 也不会执行 bash 中的脚本?
编辑:让问题更清楚
答案1
我做了一些调查,发现采购脚本.profile
不起作用有两个原因:
当您打开新的终端会话时,bash 将作为交互式非登录 shell 运行。由于
.profile
仅针对非交互式登录 shell 运行,因此启动终端会话不会运行它。尽管该脚本源自登录时
.profile
,但与小路设置在登录时导出到子进程的环境变量.profile
,a来源是一个命令,不能导出到从登录时初始化的第一个 bash 实例启动的子进程。换句话说,source
它是交互式的,并且需要是.bashrc
在交互式非登录 shell 中运行的唯一启动文件。
TL;DR.profile
仅在登录时获取脚本一次,并且不会传递到终端会话的环境。因此,我通过将其放入来获取脚本.bashrc
。
要回答上述问题,我~/.bash_profile
没有来源命令已添加到.profile
奖金:由于这些原因,我假设设置的别名.profile
也不起作用,因为它是每次在终端窗口中创建新环境时都需要执行的命令。
答案2
来自man bash
(强调我的):
当 bash 作为交互式登录 shell 或带有 --login 选项的非交互式 shell 被调用时,它首先从文件 /etc/profile 中读取并执行命令(如果该文件存在)。读取该文件后,它会按顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,并从中读取和执行命令第一个存在且可读的。
~/.bash_profile
正如 jasonwryan 所说,您可能有一个,因此您的内容~/.profile
永远不会被阅读。这个答案建议~/.profile
在您的~/.bash_profile
.您可以这样做,也可以将可执行脚本作为源代码~/.bash_profile
。
也可以看看,Bash 在线手册。