2014-03-13 67 views
2

我在嘗試通過bash廚師資源加載我的.bashrc文件時遇到了一些麻煩。我.bashrc位於/sh/.bashrc這是我的資源代碼:bash資源似乎沒有加載我的.bashrc文件

bash "Source .bashrc" do 
    cwd "/home/ameya" 
    user "ameya" 
    code "source /sh/.bashrc" 
    action :run 
end 

.bashrc只有下列位:

export ME=ameya 

所以,當我在終端上鍵入echo $ME我希望看到它打印出來ameya但沒有打印出來。我設置的方式有什麼問題?在此先感謝

+0

廚師採購你的文件開始的shell與啓動時自己的交互式shell採購文件有什麼關係?環境變量是進程本地的 - 只要發生'source'命令的shell退出,該命令不再有任何作用(除了任何啓動和遺留的子進程外)。 –

+0

我想基本上爲用戶設置ENV變量,我看到的很多示例顯示您可以通過'bash'資源中的'environment'屬性設置環境變量,或者通過獲取我所屬的文件自從將值傳遞給''environment''屬性以來,嘗試做的工作很麻煩 –

+0

'bash'資源中的'environment'屬性不會長時間更改環境變量,或者以適用於以後的交互式shell的方式更改 - - 它只設置它們,以便您告訴Chef運行的單個調用。 –

回答

2

用戶ameya.bashrc/home/ameya/.bashrc。如果你希望它運行一個共享文件,你不妨做到以下幾點:

file "/home/ameya/.bashrc" do 
    content "source /home/sh/.bashrc" 
done 

當廚師運行/home/sh/.bashrc,效果只只要是單殼體情況下,由廚師開始,運行持續。如果您希望.bashrc文件的效果在每個交互式shell調用中都生效,則需要在啓動過程中安排它的源代碼。

+0

那麼我可以通過在我的.bash_profile文件中找到文件來做到這一點? –

+1

'.bash_profile'每個登錄shell運行一次,'.bashrc'每個交互式shell運行一次。真的,你應該只在'.bash_profile'中設置環境變量,而不用爲它們設置'.bashrc' - '.bashrc'是不傳播到子進程的設置的正確位置。 –

+0

哦,好的,謝謝@Charles –