我有幾個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