`pushd .` 和 `cd -` 之间的冲突

Ber*_*ard 5 shell bash cd-command pushd

我很高兴使用该cd -命令转到上一个目录。同时我喜欢pushd .popd

但是,当我想通过 记住当前工作目录时pushd .,我失去了通过 转到上一个目录的可能性cd -。(pushd .也执行cd .)。

怎么用pushd才能用cd -

顺便说一句:GNU bash,版本 4.1.7(1)

Woj*_*tek 7

你可以使用这样的东西:

push() { 
    if [ "$1" = . ]; then
        old=$OLDPWD
        current=$PWD
        builtin pushd .
        cd "$old"
        cd "$current"
    else
        builtin pushd "$1"
    fi
}
Run Code Online (Sandbox Code Playgroud)

如果您将其命名为pushd,那么它将优先于内置函数,因为函数在内置函数之前进行评估。

您需要变量oldcurrent因为覆盖OLDPWD会使它失去其特殊意义。