2014-10-02 345 views
-1

我有幾十個劇本都開始用這個頂線和調用一個bash複製,如:導出到環境,從腳本輕鬆

#!/bin/bash 

是做有用的事情。我想要一條線叫一個功能很像:

settoplevel LD_LIBRARY_PATH /home/$USER/libsherenow 

其中settoplevel是一個函數。腳本中的一個函數很好。這將使其成爲頂級價值,就像在命令行中輸入export this=this一樣!

當你坐下來寫程序時,在bash和累人的頂層很容易無數次地發出export {whatever}

必須有一個解決這個問題,不是嗎?必須有一種方法可以使export foo=bar容易做到,而不必無休止地打字。

+0

我不明白你的問題,如果它是一個問題。 – 5gon12eder 2014-10-02 21:24:50

回答

1

我認爲你正在尋找的點.source命令:

. file-that-sets-LD_LIBRARY_PATH 

或者,如果你喜歡打字:

source file-that-sets-LD_LIBRARY_PATH 

如果文件中包含:

... 
export LD_LIBRARY_PATH 

然後這些命令讀取腳本(通過在PATH上執行搜索找到,但只有n可讀性強;它不必是可執行的)在當前shell環境中,而不是在子shell中。

如果這不是解決問題的大部分,那麼您需要用較少的道歉和更清晰的問題來重寫問題。

+0

那麼,我發現「源」命令是一個完全實現功能的充分方​​法。我做了很多變量賦值來處理組中的變量概念,然後源XXXX調用使得更柔韌的變量等於幾乎固定的變量。 Tnx – 2014-10-05 16:04:39

+0

你可以得到相當複雜的腳本來設置環境。我有一個414行的腳本,它爲一些我曾經使用過的軟件(通過處理多個不同版本的軟件而複雜化)適當地重置一套環境變量。我有一個由超過300行的Perl腳本和一個配置文件支持的60多行腳本,它執行另一個環境變量設置任務(再次被多個軟件的多個版本捲入)。 – 2014-10-05 16:15:56

+0

謝謝你們的夥伴們。現在我越來越瞭解它,我看到了更好的方式來獲得我想要的結果,然後大致處理環境變量。我想這就是爲什麼automake autoconf M4X中有這麼多的東西,無論這些東西是什麼。謝謝 – 2014-11-07 18:14:33