2017-06-18 111 views
1

我執行它在rc.local中引用的shell腳本。該文件是git-versioned,需要更改爲每個用戶的相應主目錄。絕對路徑工作正常,但這些機器間不同。 $ HOME或〜/尚未定義,如何在啓動時更改爲rc.local中的主用戶目錄?

這是工作腳本:

CD /家庭/用戶名/ rightDIR

PHP -S本地主機:8000

該腳本啓動服務器,但無法遷入正確的目錄:

cd $ HOME/rightDIR

PHP -S本地主機:8000

+0

誰做你的「主用戶」是什麼意思? '$ HOME'設置和'〜'將使用'$ HOME'的電流值,但他們都將參照根用戶的主目錄,如'root'是執行'rc.local'用戶。 – chepner

+0

我的意思是將要登錄,一旦機器啓動(如我)的用戶,所以也許我應該改一下:我怎麼能cd到即使腳本是由根家在哪裏執行不同的用戶目錄。 (每個系統上只有一個用戶) – TheRed

+0

再次,什麼用戶?機器可以有多個用戶,並且在'rc.local'執行的時候,* none *都是登錄的。除了'root'之外,沒有任何其他尊貴用戶的概念。如果有一個特定的非root用戶參與啓動過程,則必須在腳本中明確說明是誰。機器無法猜測*一旦啓動完成後,誰將登錄。 – chepner

回答

1

cd /home/*/rightDIR && php -S localhost:8000 &如果只有一個用戶在自己的主文件夾中有一個rightDIR應該工作(否則,第一場比賽獲勝)。

&&鏈的命令一起。如果cd命令失敗,則後面的命令將不會啓動。

&末開始的命令在後臺殼工作,使外殼可以繼續並運行此行rc.local中

之後到來的任何命令。如果啓動掛起無論如何,考慮增加nohup而不是php左側,以便從shell中分離命令。

+0

非常聰明的解決方法,並在我的用例:目標文件夾只存在一次,它工作得很好! – TheRed

+0

很高興幫助:) 如果都不超過1這樣的文件夾,你可以還通過所有環/家庭/ */rightDIR,要麼檢查內容,甚至啓動一個web服務器對每個:) – Jay