2014-09-05 80 views
0

我試圖設置我的/etc/rc.local來自動啓動另一個用戶重啓時的進程。出於某種原因,該用戶的.bash_rc似乎沒有被初始化。批處理用戶的環境變量沒有在su -c中設置-c

這是我加入到/etc/rc.local命令:

sudo su -l batchuser -c "/home/batchuser/app/run_prod.sh &" 

這個沒有工作,所以我也試過這樣:

sudo su -l batchuser -c ". /home/batchuser/.profile; /home/batchuser/app/run_prod.sh &" 

run_prod.sh剛剛啓動了一個python腳本。因爲它引用,它是其中獲取了.bash_rc初始化一個python路徑模塊的Python腳本失敗


編輯:它的工作原理,當我做這個

sudo su -l batchuser -c "export PYTHONPATH=/my/python/path; /home/batchuser/app/run_prod.sh &" 

爲什麼這項工作,而不是上面的聲明?爲什麼.bashrc沒有被初始化?

+0

'batchuser'的sudoers(5)設置是什麼(可以用'sudo -l -U batchuser'獲得)? – Armali 2015-05-11 12:57:18

回答

0

我遇到了同樣的問題。我不能完全解釋的行爲,但我結束了做這種類型的事情:

sudo $PYTHONPATH=$PYTHONPATH the_command 

或更專門爲您的情況下,

sudo $PYTHONPATH=$PYTHONPATH su -l batchuser -c /home/batchuser/app/run_prod.sh &" 

這是否對你的工作?如果確實如此,您可能會發現它不會像您期望的那樣立即返回。您可能需要將&移至引號之外,因此它適用於sudo命令。