Bash
pushd .
和 cd -
之間的衝突
我很高興使用該
cd -
命令轉到上一個目錄。同時我喜歡pushd .
和popd
。但是,當我想通過 記住目前工作目錄時
pushd .
,我失去了通過 轉到上一個目錄的可能性cd -
。(pushd .
也執行cd .
)。怎麼用
pushd
還可以用cd -
順便說一句:GNU bash,版本 4.1.7(1)
你可以使用這樣的東西:
push() { if [ "$1" = . ]; then old=$OLDPWD current=$PWD builtin pushd . cd "$old" cd "$current" else builtin pushd "$1" fi }
如果你命名它
pushd
,那麼它將優先於內置函式,因為函式在內置函式之前被評估。您需要變數
old
,current
因為覆蓋OLDPWD
會使它失去其特殊含義。
Wojtek 的回答稍微簡潔一點:
pushd () { if [ "$1" = . ]; then cd - builtin pushd - else builtin pushd "$1" fi }
通過命名函式
pushd
,您可以pushd
正常使用,您無需記住使用函式名稱。