在 Bash 中获取“哪个应用程序”输出

在 Bash 中获取“哪个应用程序”输出

这是我的原文StackOverflow.com 上的问题

这是我写的脚本

#!/usr/bin/env bash
GP=`/usr/bin/which git`
PWD=`pwd`
echo "PATH IS: ${GP}"
echo "PWD IS: ${PWD}"

输出为

PATH IS: 
PWD IS: /Users/user/tmp

那么问题是如何获得which git输出?我在 Mac OS X 10.6.2 上运行它。

答案1

如果git不在变量中列出的目录中$PATHwhich将无法找到它。

PATH受到下列情况的影响:

  • 登录外壳
  • 非交互式(登录)shell
  • 根壳

通常在 中指定。非交互式 shell 和登录 shell/etc/profile也会受到影响。~/.bashrc~/.bash_profile

答案2

使用type(Bash 内置命令)代替which

gp=$(type -P git)

如果您使用,type -a结果将显示别名、函数和多个可执行文件(如果存在替代项)。您可以根据需要解析输出。

不要设置PWD- 它已被 Bash 设置。事实上,我建议不要使用全大写的变量名,以避免与 Bash 的变量发生命名冲突。

# no need to set PWD, it's already set by Bash
echo "PWD IS: ${PWD}"

相关内容