Bash脚本怎么实现在使用cd命令进入任意目录时自动执行?


RVM中,如果在项目目录下保存一个 .ruby-version 的文件,会在 cd 进入该目录时候自动切换 ruby 版本

如果要用一个Bash脚本来实现类似功能的话,应该怎样实现?

大概的需求是这样:

假设最终实现了功能的脚本叫 env.sh
只要我 source env.sh
那么之后在命令行中使用 cd 进入任何一个目录,会自动判断一个指定的文件名,比如 project.settings 是否存在,如果存在,执行一些操作 比如配置环境变量啊 blablabla

shell bash

次元梦游症 10 years, 6 months ago

可以使用 Bash 覆盖 cd 实现。


 #!/bin/bash

cd() { __override_cd cd "$@" ; }

__override_cd()
{
  typeset __zsh_like_cd_hook
  if
    builtin "$@"
  then
    shift || true # remove the called method
    if [[ -f project.settings ]]
    then
      source env.sh
    fi
    true
  else
    return $?
  fi
}

cd .

土御门春虎 answered 10 years, 6 months ago

Your Answer