5

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

4

2 回答 2

8

您可以使用别名:

$ 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
于 2013-06-15T02:56:16.283 回答
3

bash并且zsh(可能还有许多其他 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
}
于 2013-06-15T04:58:26.917 回答