我有几个bash脚本,我想确保默认运行,我现在将它们存储在我的mac上~/.profile
。这是存放它们的错误地方吗?我听说过其他人并试过它们(比如~/.bashrc
,~/.bash_profile
等),但它们似乎没有用。
所有这些之间的区别是什么?我将脚本放在哪个以便它在运行时进行配置而我每次打开终端时都不必调用$ source ~/.profile
?
答案 0 :(得分:11)
如果~/.bash_profile
和~/.profile
都存在,则bash仅在作为交互式登录shell调用时才会读取~/.bash_profile
。
https://www.gnu.org/s/bash/manual/html_node/Bash-Startup-Files.html:
作为交互式登录shell调用,或使用--login
调用当Bash作为交互式登录shell或作为具有
--login
选项的非交互式shell调用时,它首先从文件/etc/profile
读取并执行命令(如果该文件存在)。读取该文件后,它会按顺序查找~/.bash_profile
,~/.bash_login
和~/.profile
,并从第一个存在且可读的命令中读取和执行命令。[...]
作为交互式非登录shell调用
当启动不是登录shell的交互式shell时,如果该文件存在,Bash将从
~/.bashrc
读取并执行命令。
~/.profile
也被其他shell使用。
终端和iTerm默认打开新shell作为登录shell(通过执行login -pf $USER
之类的操作),但许多GNU / Linux终端应用程序打开新shell作为非登录shell。 OS X用户经常使用~/.bash_profile
而不是~/.bashrc
。
答案 1 :(得分:8)
+-----------------+
| |
interactive shell -->| ~/.bashrc |
| |
+-----------------+
interactive shell
会自动提取~/.bashrc
。
查看Should the .bashrc in the home directory load automatically?
答案 2 :(得分:5)
我这样做是为了纠正这个问题:
cat .bash_profile >> .profile
rm .bash_profile
替代方案是:
echo "source ~/.profile" >> .bash_profile
答案 3 :(得分:4)
确保您在source ~/.profile
中.bashrc
注释掉.profile
或删除任何命令(.bashrc
中)以致电.profile
search_field.send_keys("Search Term")
WebDriverWait(browser, 2).until(
expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, 'ul.ui-autocomplete')),
"Autocomplete didn't pop up"
)
或者它将永远循环,你永远不会得到提示。
答案 4 :(得分:2)
不同的bash设置会根据其配置自动提供不同的文件。总是来源的几乎通用的文件是~/.bashrc
- 这是一个bash核心的东西,它将加载这个文件。在该文件中,您应该将您的行添加到source ~/.profile
,然后您就可以开始了!
- 编辑 -
来自我的Linux和我的同事的Mac:
$ echo "echo hello" >> ~/.profile
$ echo "source ~/.profile" >> ~/.bashrc
$ bash
Hello
$