2017-03-03 101 views
1

我在/A/B/script.sh中有一個腳本。當被調用時,它需要在/ X/Y/Z中的文件上運行。我該如何設置一個工作目錄的腳本,的腳本中?設置腳本的工作目錄

+0

注意:我知道我可以用(cd/X/Y/Z; ./script.sh)手動調用它,但我需要腳本在crontab中常規運行 –

+0

crontab實際上需要一個字符串來運行'/ bin/sh -c「yourstring」'(如果你的crontab提供了自己的'SHELL'變量,則替換'/ bin/sh'),所以它實際上並不限於一次一個命令。 –

+0

,順便說一句,如果你打算這樣做,請使用'exec':'(cd/X/Y/Z && exec ./script.sh)' - 這樣你付出的代價產生parens所要求的subshel​​l通過使用'exec'消耗子shell來消除,而不是將'script.sh'作爲本身是子進程的子shell的子進程運行。 –

回答

1

在腳本中放入一個cd語句,就像輸入以從交互式bash shell中設置工作目錄一樣。

+1

實際上 - *在腳本中,它應該有錯誤處理。即。 'cd/X/Y/Z ||退出「 - 交互式運行的人將會注意到'cd'失敗時,腳本會修改錯誤目錄中的文件。請參閱https://github.com/koalaman/shellcheck/wiki/SC2164 –

相關問題