获取任何命令的可执行文件

获取任何命令的可执行文件

我想知道 bash 中的任何命令都会执行哪个可执行文件。

例子:

  1. 我这里安装了firefox /usr/bin/firefox,它在$PATH
  2. alias browser=firefox
  3. alias br=browser

现在我想输入类似的内容getexecutable "br",它应该显示/usr/bin/firefox

答案1

这是我在评论中进一步编写的一个快速脚本,在别名的简单情况下将起作用。但是,对于任何带有参数等的事情,它都会惨败。

cmd="$1"
type=aliased
while [ "$type" = "aliased" ]; do
    output="$(type "$cmd")"
    type="$(cut -d ' ' -f 3 <<< "$output")"
    cmd="$(cut -d '`' -f 2 <<< "$output" | tr -d \')"
done
echo "$output"

您将必须(具有讽刺意味的是!)别名来获取此内容,因为生成子 shell 可能会删除您的本地别名。

相关内容