我有几个bash脚本,我想确保在默认情况下运行,并且我正在将它们存储在我的mac上的~/.profile
中。这是存储它们的错误地方吗?我听说过其他人,并尝试他们(如~/.bashrc
,~/.bash_profile
等),但他们似乎并没有工作。为什么我必须继续使用`source〜/ .profile`来获取设置?
所有这些和我将哪些脚本放在一起以便在运行时进行配置和我不必每次打开终端时都要拨打$ source ~/.profile
有什么区别?
我有几个bash脚本,我想确保在默认情况下运行,并且我正在将它们存储在我的mac上的~/.profile
中。这是存储它们的错误地方吗?我听说过其他人,并尝试他们(如~/.bashrc
,~/.bash_profile
等),但他们似乎并没有工作。为什么我必须继续使用`source〜/ .profile`来获取设置?
所有这些和我将哪些脚本放在一起以便在运行时进行配置和我不必每次打开终端时都要拨打$ source ~/.profile
有什么区别?
+-----------------+
| |
interactive shell -->| ~/.bashrc |
| |
+-----------------+
interactive shell
会自动源~/.bashrc
。
看看Should the .bashrc in the home directory load automatically?
不同的bash设置会根据配置自动获取不同的文件。始终采用的几乎通用的文件是~/.bashrc
- 这是一个bash核心内容,它将加载此文件。在那个文件中,你应该添加你的行到source ~/.profile
,你会很开心!
CNC中
从我的Linux和我的同事的Mac:
$ echo "echo hello" >> ~/.profile
$ echo "source ~/.profile" >> ~/.bashrc
$ bash
Hello
$
我试过这个,但它仍然不工作 – locoboy 2012-04-25 17:54:43
我仔细检查了解决方案在同事的Mac上发布。在这一点上,您能否提供有关机器上正在发生的事情的任何见解?如果你可以运行和发布ls -l〜/ .bashrc,ls -l〜/ .profile,cat〜/ .bashrc,cat〜/ .profile – 2012-04-25 17:59:29
.bashrc只有在shell是交互式的时候才会被发送,而不是*登录贝壳。按照惯例,.bashrc是从'〜/ .bash_login'调用的,但这不一定如此......所以你不能指望被调用的.bashrc。查看@ kev的帖子中的链接。 – 2012-04-25 18:02:02
我这来纠正该问题:
cat .bash_profile >> .profile
rm .bash_profile
另一种方法是:
echo "source ~/.profile" >> .bash_profile
如果同时~/.bash_profile
和~/.profile
存在时,bash只读取~/.bash_profile
当它被作为交互式登录shell调用时。
https://www.gnu.org/s/bash/manual/html_node/Bash-Startup-Files.html:
援引作为交互式登录壳,或用--login
当bash被调用以交互登录壳,或作为非交互式壳与
--login
选项,它首先从文件/etc/profile
中读取并执行命令,如果该文件存在。读完该文件后,它会按顺序查找~/.bash_profile
,~/.bash_login
和~/.profile
,并读取并执行第一个存在且可读的命令。[...]
作为交互非登录壳
,当交互式壳不是登录shell启动时,bash读取并从
~/.bashrc
执行命令如果文件已存在。
~/.profile
也被其他壳使用。
总站的iTerm在默认情况下打开新的弹作为登录shell(通过执行类似login -pf $USER
),但许多GNU/Linux的终端应用程序中打开新的弹非登录shell。 OS X用户通常使用~/.bash_profile
而不是~/.bashrc
。
确保如果你source ~/.profile
在.bashrc
你注释掉或删除任何命令(在.profile
)打电话或源在.profile
.bashrc
,否则将永远循环下去,你将永远不会得到提示。
另请参阅http://stackoverflow.com/questions/415403/whats-the-difference-between-bashrc-bash-profile-and-environment – Nakilon 2013-08-04 18:54:01