linux - 在 Bash 脚本中指定路径变量

标签 linux bash shell unix

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

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

如果我要在具有完全不同文件路径的另一台计算机上运行脚本怎么办?有没有一种方法可以在任何机器上调用脚本而不必担心文件路径?

此外,我的所有脚本都位于同一目录中,即“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 安装的文件系统。

关于linux - 在 Bash 脚本中指定路径变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39176929/

相关文章:

php - 使用 shell_exec 发送电子邮件失败

node.js - 无法在 Ubuntu 13.04 上运行 lessc。连 "command not found"都没有

linux - 如何在 bash 中存储 32 位小尾数法签名整数?

linux - linux下显卡内存占用

bash - find exec 命令中的变量

bash ;条件语句回显数字

c - Linux 模块可加载

c++ - 将图像位发送到嵌入在 FPGA 中的 HDL 生成的 RAM block

使用 Curl 下载文件的 Bash 脚本

Linux Webserver - htop 显示极端的 cpu 使用率?