我创建了一个运行特定功能的脚本。运行该特定函数后,它会调用另一个运行另一个函数的脚本。它工作得很好。但是,我用这行代码调用了第二个脚本:
( exec "/home/sh0/folder/folder2/folder3/secondScript" )
如果我要在具有完全不同文件路径的另一台计算机上运行脚本怎么办?有没有一种方法可以在任何机器上调用脚本而不必担心文件路径?
此外,我的所有脚本都位于同一目录中,即“folder3”
提前致谢!
最佳答案
最终,您必须知道脚本的安装位置,并确保该目录位于 $PATH
上。然后,您可以使用 secondScript
而无需指定脚本的任何路径。
但是,如果机器之间的位置可能有所不同,您必须决定如何消除差异。一种常见的选择是将脚本保存在已知位置,例如 $HOME/bin
或 /usr/local/bin
,您可以在其中将该已知位置保存在您的路径 - 或在 /opt/program/bin
中(根据您所使用的程序系统的名称,为 program
使用适当的名称)。
另一个选项是使用一个环境变量来指定脚本的查找位置(PROGRAMLOCATION=/home/sh0/folder/folder2/folder3
和 export PATH=$PATH:$PROGRAMLOCATION
)。然后,您必须确保环境变量(PROGRAMLOCATION
和 PATH
)设置正确 - 这可能很棘手。
如果您认为文件夹名称足够唯一,您可以(但可能不应该)使用 find
来定位该目录。当你发现6个不同的同名目录时你会怎么做?另外,不受约束的 find
速度很慢 - 特别是如果您有 NFS 安装的文件系统。
关于linux - 在 Bash 脚本中指定路径变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39176929/