題 哪裡可以在Mac OS X Snow Leopard和Lion上找到.bashrc文件?


我想在我的Snow Leopard機器上安裝rvm。

它說我需要為我添加一行 .bashrc 文件(我正在使用bash)但我的位置在哪裡 .bashrc 文件?


84
2018-05-30 21:03


起源


你應該把你的解決方案放在一個答案中並接受它(在SU允許你這樣做之前你必須等待一兩天)那樣有相同問題的人可以看看這個問題可以看出它有一個答案。 - Nifle
他的解決方案與最高投票的答案沒有什麼不同。 - David Cowden
為了確保,這不是“Linux = .bashrc與Mac OS =。(bash_)配置文件”的問題,shell啟動文件在Linux和Mac上的工作方式相同,而.bashrc文件是Session的更合適的地方具體設置。你使用例如tmux或屏幕,你可能沒有登錄會話,但仍然想要你的別名。 Mac感覺不同的原因是大多數Linux發行版都發布了已委託(源)bashrc的系統配置文件腳本或骨架配置文件。 - eckes


答案:


關於問題 .bashrc 以上:

在大多數係統上, ~/.bashrc 僅在開始時使用 互動 非登錄 貝殼。但是,當你啟動一個新的shell時,它往往是一個 互動 登錄 貝殼。因為這是一個 登錄 貝殼, .bashrc 被忽略了。要使非登錄shell和登錄shell之間的環境保持一致,您必須獲取 .bashrc 從你的 .profile 或者你的 .bash_profile

請參閱Bash參考手冊的部分 6.2 Bash啟動文件

作為交互式登錄shell調用,   或者使用--login

當Bash作為交互式調用時   登錄shell,或作為非交互式   shell使用--login選項,它   首先從中讀取和執行命令   文件/ etc / profile,如果是那個文件   存在。讀完那個文件後,就可以了   尋找〜/ .bash_profile,   〜/ .bash_login和〜/ .profile,在那裡   命令,讀取和執行命令   從第一個存在和存在的   可讀。

作為交互式非登錄shell調用

當啟動不是登錄shell的交互式shell時,Bash會讀取並執行   來自〜/ .bashrc的命令,如果該文件存在。

通常,你的〜/ .bash_profile   包含該行

   if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

在任何特定於登錄的初始化之後(或之前)。

在我的Mac(運行Leopard)上,沒有源代碼 ~/.bashrc。我不得不自己添加這個功能。

在某些系統和其他操作系統上, .bashrc 來自全球 /etc/profile 要么 /etc/bash_profile ,或使用來自的模板文件完成 /etc/skel

說實話之間的區別 .bashrc 和 .bash_profile 社區不太了解。當許多開發人員說“將此添加到您的.bashrc”時,他們的真正含義是“將此添加到您的.bash_profile”。他們希望將功能添加到您的 登錄 貝殼(是的 .bash_profile),不是你的 非登錄 貝殼。實際上,它通常並不重要,並且可以放置配置 .bashrc 是可以接受的


75
2018-06-01 17:26



此鏈接可以很好地概述shell的類型以及何時加載啟動文件 - hacktux.com/bash/bashrc/bash_profile - studgeek
這裡的“來源”是什麼意思? - elgrego
@elgrego,這是一個很好的描述: 當源文件(通過在命令行鍵入源文件名或.filename)時,文件中的代碼行就像在命令行打印一樣執行。 看到 tldp.org/HOWTO/Bash-Prompt-HOWTO/x237.html - Stefan Lasiewski


事實證明,在Mac OS X Snow Leopard以及Mac OS X Lion上,調用了加載的文件 .profile不是 .bashrc

你想要做的是創建一個文件 ~/.profile 並將其稱為.profile(如果它尚不存在)。

把你需要的任何信息加載到每個bash實例(謝謝,thepleplepixel)。

幾個旁注:

  1. 文件前面的句點標誌著Finder和它不可見 默認情況下為ls命令。使用ls列出不可見文件 從終端命令,使用 -a 作為參數: ls -a
  2. ~ 符號代表 /Users/YourUserName 其中YourUserName 是您的用戶名的簡稱。

編輯:Chris Page註釋(正確地),無論你在.profile文件中放置什麼,都將適用於你正在使用的任何shell(即zhs,bash等等)。如果希望內容僅影響bash shell,請將內容放在a中 .bash_profile文件而不是 .profile 文件。


57
2017-12-20 23:51



您的問題在2010年6月1日[正確]得到了回答 - 在您提出問題後的第二天。一年後,您回來並提供完全相同的答案並接受您自己的答案...... - David Cowden
實際上,他的答案確實比2010年6月1日給出的答案增加了更多細節。他專門解決了Mac OS X上我發現有用的問題。 - webworm
請注意,如果一個 .bash_profile 已經存在於您的主目錄中 .profile 文件將無法讀取! - Phani
我有一個全新的Mac Os El capitan安裝。沒有 輪廓 文件。只需創建一個.profile文件即可。我個人將.bashrc重命名為.profile。 - Nicolas Thery


你必須自己做 .bashrc。您只需使用文本編輯器來創建一個名為的文件 .bashrc (沒有擴展名)包含您想要的內容並將其保存在您的主目錄中(/Users/YourUserName/)。


4
2018-05-30 21:05



實際上,這不起作用,但你確實通過告訴我製作我自己的文件向我發送了正確的方向。在Snow Leopard配置上運行的文件是.profile,而不是.bashrc(由於某種原因未在此操作系統中加載)。我會在問題中發布詳細的說明。謝謝! - Yuval
@Yuval:默認情況下,a .bashrc 會工作,但是 只有沒有 .profile。 我猜 ~/.profile 但是,默認情況下存在。很高興我能幫助你! (你應該把你的解決方案放在一個答案中,並接受這個問題的未來讀者)。 - squircle
我想你的評論 只有沒有.profile 是不正確的。 .bashrc將在交互式非登錄shell中工作,或者如果它源自.profile(.bash_profile可能是一個更好的地方,因為.profile用於Bourne shell)。 .profile在交互式非登錄shell期間使用。 - Stefan Lasiewski
@Stefan那聽起來不錯。我不是專家:) - squircle
沒有人;)。這個東西(.bashrc vs .profile vs. .bash_profile vs. .bash_login vs. interactive login shell vs interactive non-login shell vs non-interactive shell)令人困惑,它被許多Unix和shell腳本破壞和覆蓋。 - Stefan Lasiewski


我發現在我的操作系統10.6.5中,bash設置在“/ etc / bashrc”中。我認為這是shell的頂級規範。

但是,您需要root帳戶才能對其進行修改。本地每用戶規範“〜/ .bashrc”應該從以下代碼段開始,以讀取和加載系統級bash設置:

if [ -r /etc/bashrc ]; then
    . /etc/bashrc 
fi

我通常在系統級別bashrc中添加別名,以便所有用戶也可以訪問它們。除非他們不想使用您的快捷方式和別名。

祝好運!


3
2017-11-26 08:02



/ etc / profile(由登錄shell運行)是一個全局bash啟動腳本,適用於所有用戶並提供登錄shell的默認行為。它反過來運行/ etc / bashrc,其中包含適用於登錄和非登錄shell的自定義。類似地,個人用戶應該創建一個運行〜/ .bashrc的〜/ .bash_profile文件,這是大多數自定義應該在的地方,而〜/ .bashrc應該運行/ etc / bashrc來繼承非登錄shell的默認行為。 - Chris Page
對於個人用戶,最好將這些自定義項添加到您的主目錄中 ~/.bashrc 不是 /etc/bashrc。 /etc/bashrc 是系統上所有用戶的全局設置,可能不是您想要的。此外,蘋果可能會出現並改變 /etc/bashrc 定期,這可能會吹走您的自定義。 - Stefan Lasiewski


使用.profile文件添加您要添加​​到linux .bashrc文件的任何內容。

例如

PATH=/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/:/opt/local/bin:/opt/depot_tools/:~/bin:$PATH
alias t='/Users/<username>/.todo/todo.sh'
alias punch='python /Users/<username>/.todo/Punch.py'
alias clock='cat </dev/tcp/time.nist.gov/13'
alias sudotext="sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit" 

1
2018-06-01 18:18



我建議你使用〜/ .bash_profile(而不是〜/ .profile),除非你確定你希望你的自定義在其他shell中生效並且它們是兼容的。 - Chris Page
為了確保,這不是“Linux = .bashrc與Mac OS =。(bash_)配置文件”的問題,shell啟動文件在Linux和Mac上的工作方式相同,而.bashrc文件是Session的更合適的地方具體設置。你使用例如tmux或屏幕,你可能沒有登錄會話,但仍然想要你的別名。 Mac感覺不同的原因是大多數Linux發行版都發布了已委託(源)bashrc的系統配置文件腳本或骨架配置文件。 - eckes