`command -v`似乎只搜索/ usr / bin

时间:2015-03-10 13:29:45

标签: bash shell

对于某些shell脚本,我需要在变量中存储command -v foo的输出。我正在检查系统上是否存在某些二进制文件。当我在终端中执行command -v foo时,我得到一个输出,但是当我在shell脚本中执行command -v foo时,我没有得到任何输出。

➜  tools git:(install-script) ✗ command -v node
/usr/local/bin/node


check_deps() {
    declare -A deps
    deps=( ['git']=`command -v git`
           ['gem']=`command -v gem` 
           ['node']=$(command -v node))
           # ['redis-server']=command -v redis-server
           # ['postgres']=command -v psql
           # ['sass']=command -v sass
           # ['gulp']=command -v gulp
           # ['bower']=command -v bower )
    for each in ${!deps[@]};
    do
        echo $each ${deps[$each]}
    done
}
check_deps

输出是:

node
git /usr/bin/git
gem /usr/bin/gem
[Finished in 0.0s]

发生了什么事?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我使用的Sublime Text有一个名为Bash Build系统的插件。基本上它给我一个没有/ usr / local / bin的文件,这个构建语法现在返回正确的command -v输出:

{ "cmd" : ["bash", "$file"], "selector" : "source.shell", "osx": { "path" : "$PATH:/usr/local/bin" } }