在Bash脚本中指定pathvariables

我创build了一个运行某个函数的脚本。 运行某个函数后,调用另一个运行另一个函数的脚本。 它的工作完美。 不过,我已经用这行代码调用了第二个脚本:

( exec "/home/sh0/folder/folder2/folder3/secondScript" ) 

如果我要在完全不同的文件path的另一台机器上运行脚本,该怎么办? 有没有办法在任何机器上调用脚本,而不用担心文件path?

另外,我所有的脚本都位于同一个目录下,即'folder3'

提前致谢!

最终,你必须知道脚本的安装位置,并确保该目录位于$PATH 。 然后,您可以使用secondScript而不指定脚本的任何路径。

但是,如果地点可以在机器之间变化,你必须决定如何削减差异。 一个常见的选择是将脚本保存在一个已知位置(如$HOME/bin/usr/local/bin ,或者在/opt/program/bin保存已知位置(使用program的合适名称取决于你所使用的程序系统)。

另一个选择是有一个环境变量,指定脚本被找到的位置( PROGRAMLOCATION=/home/sh0/folder/folder2/folder3export PATH=$PATH:$PROGRAMLOCATION )。 然后你必须确保环境变量( PROGRAMLOCATIONPATH )设置正确 – 这可能会非常棘手。

如果您认为文件夹名称是唯一的,您可以(但可能不应该)使用find来查找目录。 当你找到6个不同的同名目录时,你会做什么? 另外一个不受限制的find是缓慢的 – 特别是如果你有NFS挂载的文件系统。

您可以简单地存储路径,如下所示

 #!/bin/bash MY_PATH="$PWD" FOLDER3="folder3" echo "$MY_PATH/$FOLDER3" 

让我们知道这是否你正在寻找或不。