2016-08-27 110 views
2

我创建了一个运行某个函数的脚本。运行该特定函数后,它会调用另一个运行另一个函数的脚本。它的工作完美。然而,我呼吁与这行代码,第二脚本:在Bash脚本中指定路径变量

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

如果我是用完全不同的文件路径在不同的机器上运行我的脚本?有没有办法在任何机器上调用脚本而不用担心文件路径?

而且,我的所有脚本都位于同一目录这将是“folder3”

提前感谢!

+0

你是不是真的指的是_totally different_,即_everything_但是'folder3/secondScript'可能会在不同的机器上有所不同?或者你是否意味着你的用户的家(也许是'/ home/sh0/folder')目录在每台机器上都不同,但相对路径保持不变? –

回答

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

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

#!/bin/bash 

MY_PATH="$PWD" 
FOLDER3="folder3" 

echo "$MY_PATH/$FOLDER3" 

让我们知道,如果这是你在找什么或没有。