当我切换到目录时自动运行脚本

当我切换到目录时自动运行脚本

可能的重复:
进入目录时执行 bash 脚本

我正在运行一个需要一些非常特定的工具版本的环境。设置环境的命令位于名为的脚本中set_foo_env.sh

假设我有一个目录~/repository/foo/set_foo_env.sh进入目录就可以运行吗foo

答案1

您可以使用PROMPT_COMMAND,PROMPT_COMMAND中指定的代码在bash绘制提示符之前执行。

# Call function 'foo'
PROMPT_COMMAND=foo

# The function
foo() {
        if [[ $PWD == "$HOME/repository/foo" ]]; then
              set_foo_env.sh  
        fi
}

注意,PROMPT_COMMAND 是 bash 特定的,这不是一个有效的方法,因为每次 bash 绘制提示符时都会调用函数 foo 。

答案2

将 更改cd为一个函数来运行真实的函数cd,然后运行您的脚本。

cd () {
    if builtin cd ${1:+"$@"} && [ -r ./set_foo_env.sh ]; then
        . ./set_foo_env.sh
    fi
}

这假设:

  1. set_foo_env.sh特定于单个目录,并且
  2. set_foo_env.sh应该会改变现有的 shell 环境。

如果您想要基于路径的全局文件,请查看 manatwork 提到的问题(进入目录时执行 bash 脚本)。

相关内容