2010-09-16 64 views
3

我在寫一個python/pygtk應用程序,它在$ HOME的某個文件夾(例如~/.custom_scripts)中添加了一些自定義腳本(bash)。

我想讓該文件夾在$PATH中可用。所以每次python應用程序添加腳本時,當用戶打開一個終端(例如gnome-terminal)時,該腳本可以立即可用。

你在哪裏建議「注入」$ PATH依賴性? .bashrc/etc/profile.d等? 我可能遇到什麼優點/缺點?

例如,如果我添加一個腳本來在/etc/profile.d中導出新路徑,那麼在我重新登錄之前,路徑不會被更新。

感謝

回答

1

〜/ .bashrc在每次打開gnome-terminal時讀取(假設用戶將SHELL設置爲/ bin/bash)。

務必檢查os.environ ['PATH']以查看目錄是否已添加,以便腳本不會多次添加它。

1

/etc/profile.d中會添加到每個用戶的路徑

的〜/ .bashrc也只是你自己

你總是可以做「$源的〜/ .bashrc 「重新讀取配置文件。

1

編輯:我誤讀了原來的問題,所以這個片段是唯一有用的修改PATH,但不堅持它...

這都可以使用os模塊進行:

import os 
USER_HOME = os.path.expanduser('~') 
os.environ['PATH'] += ":" + os.path.join(USER_HOME, '.custom_scripts') 

這附加:~/.custom_scripts$PATH的末尾,因爲PATH必須始終冒號分隔。

+0

...只要你的Python腳本正在運行,這是相當無用的。 – geoffspear 2010-09-16 19:24:29

+0

哈,我的閱讀理解錯誤。我已經更新了我的答案,以反映有用範圍的有限性。 *恥辱* – jathanism 2010-09-16 19:48:18

2

.profile將是一個合理的地方,如果它是每用戶安裝; /etc/profile.d用於系統範圍的安裝。 (當然,你需要root來做那件事。)

你的安裝程序將不能改變當前shell的路徑(除非它正在通過source運行,這將會是奇怪的)。

2

對於進入$ HOME目錄的腳本,通常使用$ HOME/bin文件夾,而不是(通常)在路徑上。

1

你不應該。這是用戶的選擇,他是否希望在PATH中,在什麼情況下以及如何實現這一點。你可以做的是通知用戶你的腳本所在的目錄,並建議把它放到PATH

或者,您可能從用戶的角度問?

+0

那麼這就是應用程序正在做什麼,管理「自定義」腳本......當安裝這個應用程序時,用戶已經期待這一點。 – 2010-09-16 19:35:18

1

你爲什麼不根據第一個呼叫建立相應的PATH你的模塊(即在你的模塊__init__.py):

# this is your module's __init__.py 
import sys 
eggs = ['/path/to/egg/1.egg', '/path/to/egg/2.egg'] 
for egg in eggs: 
    sys.path.append(egg)