Shell
如何從另一個路徑執行腳本,並知道腳本的路徑?
我需要執行一個腳本來訪問文件所在路徑中的文件。
例如:我有腳本
/home/me/folder/script.sh
,這個腳本將訪問文件/home/me/folder/myfile
。由於文件位於腳本的同一路徑中,我只使用 namemyfile
,而不是完整路徑。但是,如果我從 執行它
/tmp/
,例如:/tmp$ /home/me/folder/script.sh
它給了我:
myfile: No such file or directory
那麼,我怎麼能在腳本中說文件與腳本本身在同一路徑中呢?
怎麼樣
$(dirname "$0")/myfile
?
您無法在所有情況下都知道,但通常(並非總是)當您通過路徑而不是讓 shell search 執行腳本時,腳本的路徑
$PATH
將在$0
. 然後,您可以使用dirname "$0"
或${0%/*}
獲取路徑。