问题答案
可以使用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 .
标签: Bash
答案

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

 

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

 

大概的需求是这样:

 

假设最终实现了功能的脚本叫 env.sh

只要我source env.sh

那么之后在命令行中使用cd 进入任何一个目录,会自动判断一个指定的文件名,比如project.settings 是否存在,如果存在,执行一些操作 比如配置环境变量啊 blablabla

举一反三