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

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

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

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

大概的需求是这样:

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


使用inotify


可以使用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 .
【热门文章】
【热门文章】