在Bash脚本中指定路径变量

时间:2016-08-27 02:39:18

标签: linux bash shell unix

我创建了一个运行某个功能的脚本。运行该特定功能后,它会调用另一个运行另一个功能的脚本。它工作得很好。但是,我用这行代码调用了第二个脚本:

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

如果我在具有完全不同文件路径的其他计算机上运行我的脚本怎么办?有没有办法在任何机器上调用脚本而不必担心文件路径?

此外,我的所有脚本都位于“folder3”

的同一目录中

提前致谢!

2 个答案:

答案 0 :(得分:3)

最终,您必须知道脚本的安装位置,并确保该目录位于$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的文件系统。

答案 1 :(得分:1)

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

#!/bin/bash

MY_PATH="$PWD"
FOLDER3="folder3"

echo "$MY_PATH/$FOLDER3"

如果您正在寻找与否,请告诉我们。