进入目录时是否可以自动进行一些shell调用?

时间:2013-06-15 02:46:07

标签: bash shell sh

就像本地.bashrc文件一样,每次进入目录时都是source d。 如何使这项工作?

2 个答案:

答案 0 :(得分:7)

您可以使用别名:

$ echo 'echo "execute something for $PWD"' > tests/.cdrc
$ _cd()
{
    \cd $1
    [ -r .cdrc ] && . .cdrc
}

此函数首先更改为指定为参数的目录,检查文件.cdrc是否可读并来源。

$ alias cd=_cd

然后

$ cd tests
execute something for /path/to/tests

答案 1 :(得分:3)

bashzsh(可能还有许多其他shell)具有允许您在显示提示之前运行任意命令的功能。您可以使用它来获取.dirrc文件,但不会破坏标签页。

以下是bash

中的操作方法
PROMPT_COMMAND='
if [ "${PREV}" != "$(pwd -P)" ]; then
    if [ -r .dirrc ]; then
        . ./.dirrc
    fi
    PREV=$(pwd -P)
fi
'

来自bash手册页:

  

PROMPT_COMMAND:如果设置,则在发出每个主要提示之前将该值作为命令执行。

这是在zsh中执行此操作的方法(请参阅zshmisc手册页):

precmd() {
    if [ "${PREV}" != "$(pwd -P)" ]; then
        if [ -r .dirrc ]; then
            . ./.dirrc
        fi
        PREV=$(pwd -P)
    fi
}