我正在使用 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
你就会发现它对你来说也失败了。