是否可以在PATH中包含一个命令,只要读取了PATH就会运行该命令?
用例:
我想将npm bin
的输出添加到我的路径中,这样我就可以访问本地npm包二进制文件而无需键入$(npm bin)/grunt
。如果我cd到另一个节点项目,我希望我的路径更新为指向npm bin
的新输出。
答案 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 $@ }