2010-05-23 83 views
10

我正在爲一些軟件寫一點安裝腳本。它所做的只是解壓縮一個目標tar,然後我想永久設置一些環境變量 - 主要是解壓縮庫的位置並更新$ PATH。我是否需要以編程方式編輯.bashrc文件,例如添加適當的條目,或者有其他方法嗎?什麼是標準做法?如何以編程方式在Linux中設置永久環境變量?

編輯:該軟件包包含許多運行腳本(20+),它們都使用這些命名的環境變量,所以我需要以某種方式設置它們(變量名稱已被選擇使得碰撞極不可能)

回答

16

LSB兼容(見spec)的做法是在/etc/profile.d/文件夾中創建一個shell腳本。

在您的應用程序命名後(並確保名稱是唯一的),請確保名稱以.sh(您可能還想爲其他shell添加腳本)和export腳本中需要的變量結尾。來自該目錄的所有*.sh腳本在用戶登錄時被讀取 - 同時/etc/profilesource d。

請注意,這不是由bash執行;相反,這是各種協議。

+0

好吧,這看起來可能是解決方案。大概安裝程序將需要以root身份運行,以便在此處編寫可執行腳本。 – 2010-05-23 14:16:19

+0

這個腳本是否也被服務讀取?例如apache或tomcat? – Tobia 2014-09-26 14:45:16

3

標準做法是將其安裝到路徑中和標準庫目錄中的目錄中,因此不需要更新這些變量。

更新.bashrc是有點容易失敗,除其他外;如果用戶使用不同的文件或外殼怎麼辦?

+1

+1正確。如果你試圖編輯它們的.bashrc,用戶會很不高興。如果你想安裝到一個非標準目錄 - 或者不認爲你的用戶有權限 - 讓他們指定'--install-dir = mydir'並告訴他們他們需要添加到他們的環境中。 http://golang.org/doc/install.html – msw 2010-05-23 14:04:17

+0

有一個很好的例子,我認爲編輯.bashrc會有很多原因。問題是軟件包含許多腳本(20+),它們都使用這些命名的環境變量 - 所以我需要以某種方式設置它們。 – 2010-05-23 14:08:28

+2

一種方法是將它們放入調用腳本的包裝腳本中。 – WhirlWind 2010-05-23 14:13:25

2

您還可以生成並安裝設置這些變量的腳本。然後,您的軟件包的用戶將獲得該腳本或將其內容複製到他們自己的shell init文件中。

+4

或者包裝腳本以已知的名稱和地點調用var-setting腳本,然後調用初始可執行文件。 – 2010-05-23 14:13:13