我有一個這樣的腳本:呼叫使用相對路徑,另一個腳本一個shell腳本
#!/bin/csh
echo "This is the main programme"
./printsth
我想從使用相對路徑此腳本中調用腳本。有沒有辦法做到這一點?相對路徑我的意思是相對於我的調用腳本的路徑。
我有一個這樣的腳本:呼叫使用相對路徑,另一個腳本一個shell腳本
#!/bin/csh
echo "This is the main programme"
./printsth
我想從使用相對路徑此腳本中調用腳本。有沒有辦法做到這一點?相對路徑我的意思是相對於我的調用腳本的路徑。
您可以參考$cwd
的當前工作目錄。因此,如果您想用相對於當前工作目錄的路徑調用,請使用$cwd
開始行。
例如,如果你想調用在當前目錄下的,說:
$cwd/printsth
如果你要撥打的一個目錄上面:
$cwd/../printsth
確定這是一個csh
雖然腳本(即第一行是#!/bin/csh
)。如果是sh
或bash
腳本,則需要使用$PWD
(用於'當前工作目錄'),而不是$cwd
。
編輯:
如果你想相對於腳本的目錄,而不是當前工作目錄的目錄,那麼你可以這樣做:
setenv SCRIPTDIR `dirname $0`
$SCRIPTDIR/printsth
,將設置$SCRIPTDIR
到同一目錄原始腳本。然後你可以建立相關的路徑。
你可以做到這一點,而不使用$ cwd和$ pwd – Programmer
呃,實際上,'csh'的默認值是以任何方式使用當前工作目錄,所以'。/ printsth'會在CWD中查找。如果你想在原始腳本的同一目錄下查看,那實際上有點困難。你想要什麼? –
我想在原文腳本 – Programmer
運行腳本爲./printsth
將不會始終工作,因爲相對路徑將取決於運行主腳本的目錄。
一個解決辦法是,以確保我們進入其中的腳本存在的目錄,然後運行它:
cd -P -- "$(dirname -- "$0")"
./printsth
更多的例子,請參閱:How to set current working directory to the directory of the script?
您爲什麼認爲這不起作用?學習打開你的shell調試,例如'set -vx'(或類似的csh)和'echo $ cwd'等來查看你的位置。祝你好運。 – shellter