Shell

將目錄添加到 PATH 以從子目錄執行腳本

  • September 22, 2019

我正在使用 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,您會發現它也對您失敗。

引用自:https://unix.stackexchange.com/questions/543078