将目录添加到 PATH 以从子目录运行脚本

将目录添加到 PATH 以从子目录运行脚本

我正在使用 Ubuntu,我正在尝试向我的文件夹添加一个文件夹,PATH其中包含子文件夹,其中包括我的脚本。

我的文件夹路径是:

/opt/tools/utils/my_script.sh

/opt/tools/steps/my_script.sh

其他脚本确实存在,但我的重点是my_script.sh

我有一个从存储库克隆的脚本,它执行以下操作: export PATH=$PATH:/opt/tools,然后调用utils/my_script.sh.这在我的机器上运行良好,但在我同事的机器上它显示这utils/my_script.sh不是文件或目录。如何解决这个问题?

答案1

事情不是这样的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你就会发现它对你来说也失败了。

相关内容