如何找到正在执行的脚本的位置?

时间:2018-09-30 14:56:27

标签: bash shell unix sh

如何找到(如果可能)正在执行的脚本的位置?

所以我有一个脚本,可以用来做一些魔术,我需要从系统上的随机位置调用它(该系统可以是我的服务器,我的服务器,我朋友的PC,我的妈妈的PC等)

现在,我需要执行一些与脚本一起存在的二进制文件,我该怎么做?

说我的脚本文件夹有3个文件:

  • binary1
  • myScript.sh
  • binary2

现在,整个文件夹可以位于一个系统上的“ / tmp / scripts” 中,而可以位于其他系统上的“ / home / user / Downloads” (随机位置)。
我需要从中运行此脚本,例如“ / home / user / Desktop” 。 所以我的问题是,如何在我的脚本中执行binary1binary2而又不事先知道它们的实际路径?

2 个答案:

答案 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*