我有一個名為的用戶,預設foo
使用.我無法更改預設 shell。 Foo 有一個名為 running 的服務,該服務的所有啟動腳本和包含 ENV 變數的 .(dot) 檔案都位於 foo 的主目錄中。tcsh
/etc/passwd
xyz
現在,還創建了一個啟動腳本來運行該服務,並將/etc/init.d/xyz
其放入用 bash 編寫的腳本中。
現在的問題是該服務未在啟動時啟動,並且我也無法在登入時從預設使用者執行它。只有當我 su 到 foo 用戶並執行腳本來啟動服務時才可以運行。
如果我喜歡這樣
sudo su foo /home/foo/xyz
它會向我顯示類似的錯誤then: then/endif not found.
。
所以我想運行一個 tcsh 程序,以便在啟動時從 bash 中的 init.d 腳本運行。目前我嘗試這樣做
su - foo -c "source /home/foo/.env_vars && /home/foo/bin/xyz start"
但這並不是啟動時啟動服務。
我不確定如何使 tcsh 腳本在啟動時執行。
答案1
您可以:
- 用於
tcsh -c $script
透過 tcsh 運行腳本 - 將腳本中的 shebang(第一行)設為
#!/bin/tcsh
並將其設為可執行;然後你就可以使用$script
指令來啟動它。