在PATH环境变量中包含命令

时间:2015-08-27 19:16:22

标签: node.js unix zsh

是否可以在PATH中包含一个命令,只要读取了PATH就会运行该命令?

用例: 我想将npm bin的输出添加到我的路径中,这样我就可以访问本地npm包二进制文件而无需键入$(npm bin)/grunt。如果我cd到另一个节点项目,我希望我的路径更新为指向npm bin的新输出。

1 个答案:

答案 0 :(得分:0)

您最好的选择是更新每个目录更改的路径。这些方面应该做的事情:

 # define a "PRE_PATH"
 export PRE_PATH="/bin:/usr/bin" # <-- put your actual path here
 export PATH=$PRE_PATH

 function update_my_path() {
   local npm_path
   npm_path=`npm bin`
   if [[ -z $npm_path ]]; then
      PATH=${npm_path}:$PRE_PATH
      # do you need to rehash after redefining your $PATH? I don't know...
      rehash
   fi 
 }
 autoload -U add-zsh-hook
 add-zsh-hook chpwd update_my_path

另一种方法是定义一堆函数,例如

 function grunt() { $(npm bin)/grunt $@ }