我创建了一个运行某个函数的脚本。运行该特定函数后,它会调用另一个运行另一个函数的脚本。它的工作完美。然而,我呼吁与这行代码,第二脚本:在Bash脚本中指定路径变量
(exec "/home/sh0/folder/folder2/folder3/secondScript")
如果我是用完全不同的文件路径在不同的机器上运行我的脚本?有没有办法在任何机器上调用脚本而不用担心文件路径?
而且,我的所有脚本都位于同一目录这将是“folder3”
提前感谢!
我创建了一个运行某个函数的脚本。运行该特定函数后,它会调用另一个运行另一个函数的脚本。它的工作完美。然而,我呼吁与这行代码,第二脚本:在Bash脚本中指定路径变量
(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挂接的文件系统。
您可以简单地存储路径类似如下所示
#!/bin/bash
MY_PATH="$PWD"
FOLDER3="folder3"
echo "$MY_PATH/$FOLDER3"
让我们知道,如果这是你在找什么或没有。
你是不是真的指的是_totally different_,即_everything_但是'folder3/secondScript'可能会在不同的机器上有所不同?或者你是否意味着你的用户的家(也许是'/ home/sh0/folder')目录在每台机器上都不同,但相对路径保持不变? –