如何找到(如果可能)正在执行的脚本的位置?
所以我有一个脚本,可以用来做一些魔术,我需要从系统上的随机位置调用它(该系统可以是我的服务器,我的服务器,我朋友的PC,我的妈妈的PC等)。
现在,我需要执行一些与脚本一起存在的二进制文件,我该怎么做?
说我的脚本文件夹有3个文件:
binary1
myScript.sh
binary2
现在,整个文件夹可以位于一个系统上的“ / tmp / scripts” 中,而可以位于其他系统上的“ / home / user / Downloads” (随机位置)。
我需要从中运行此脚本,例如“ / home / user / Desktop” 。
所以我的问题是,如何在我的脚本中执行binary1
和binary2
而又不事先知道它们的实际路径?
答案 0 :(得分:0)
如果foo
是脚本的别名,请尝试:
n="$(type -f foo)" ; n="${n/*\`}"; n="${n%?}"
dirname "$(realpath "$(which "$n")")"
答案 1 :(得分:0)
您只能执行的可执行文件存在于PATH
变量或初始化文件中(例如别名和函数)。
因此,有两个选择。尝试确定脚本所在的位置,并在脚本的开头添加如下路径。
# Your script beginning
PATH="$PATH:/<location>"
其他选项,创建一个诸如$HOME/bin
之类的文件夹,然后在所有计算机上的该位置复制脚本,或者更好的方法是,您可以在所有计算机上添加脚本/usr/bin
或/usr/local*