这是我的原文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
不在变量中列出的目录中$PATH
,which
将无法找到它。
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}"