2016-05-21 33 views
0

在我的.bashrc文件我有以下兩條命令:bash的hash命令不會影響全球環境

hash ih kl klt 
hash 

當.bashrc文件的來源,如預期的輸出:

hits command 
    0 /userdata/cfor/utils/worklib/kl 
    0 /userdata/cfor/utils/prodlib/ih 
    0 /opt/local/tools/bin/vi 

但後來當我在命令提示符下輸入「hash」時,它告訴我哈希表是空的。就好像散列指令的效果只在獲取.bashrc文件時才存在。我在.bashrc文件中放入了「echo $$」指令,然後在採購完成後檢查$$的值,它們是相同的。爲什麼在.bashrc文件完成源代碼之後散列命令的效果不會持續?

謝謝!

+0

你的'.bashrc'還有什麼?你在修改PATH嗎? – pneumatics

+0

是的,但只在.bashrc文件的頂部。散列指令只有在所有路徑編輯完成後纔會出現。哈希命令後面有函數定義,但它們與哈希命令所處理的命令無關。 – rbaumann

回答

0

我解決了這個問題。我發現我的系統管理員在/ etc/profile文件中引入了一個鏈接到另一個腳本,該腳本導致.bashrc文件被作爲系列文件中的幾個文件中的一個來源。這與Dot文件在默認環境中自動獲取的方式完全不同。無論如何,其中一個「額外」腳本重置了PATH,導致命令哈希表重新初始化。我發現,即使在我公司的修改中,〜/ .bash_profile文件仍然是最後一個文件,所以我把哈希指令放在那裏。然後,在我註銷並重新登錄後,哈希指令的結果仍然存在。

謝謝你的回覆,他們幫助引導到哪裏尋找。