Shell
將目錄添加到 PATH 以從子目錄執行腳本
我正在使用 Ubuntu,我正在嘗試向我添加一個文件夾,
PATH
其中包含包括我的腳本在內的子文件夾。我的文件夾路徑是:
/opt/tools/utils/my_script.sh
/opt/tools/steps/my_script.sh
確實存在其他腳本,但我的重點是
my_script.sh
我有一個腳本,從 repo 複製,它確實:
export PATH=$PATH:/opt/tools
,然後它呼叫utils/my_script.sh
. 這在我的機器上執行良好,但在我同事的機器上顯示它utils/my_script.sh
不是文件或目錄。如何解決這個問題?
這不是如何
PATH
工作的。如果我添加一個父目錄,我不能簡單地呼叫孩子:$ cat ~/foo/bin/bar.sh #!/bin/sh echo yeh!
現在,如果我添加
~/foo
到我的PATH
,我不能呼叫腳本bin/bar.sh
:$ PATH="~/foo:$PATH" $ bin/bar.sh bash: bin/bar.sh: No such file or directory
如果我已經在,我只能這樣做
~/foo
:$ cd ~/foo/ $ bin/bar.sh yeh!
使目錄中的文件可用的正確方法是將目錄本身添加到
PATH
,而不僅僅是目錄的父目錄:PATH="~/foo/bin:$PATH"
現在,我可以
bar.sh
從任何地方打電話:$ cd / $ bar.sh yeh!
換句話說,它也不能在您的機器上執行。你一定是
utils/my_script.sh
從/opt/tools
. 嘗試cd /
然後utils/my_script.sh
,您會發現它也對您失敗。