bashでディレクトリのbookmark

これすごい便利だった
https://threkk.medium.com/how-to-use-bookmarks-in-bash-zsh-6b8074e40774

CDPATHを使うとこんな便利なことができるのね

ただ以下の方が指摘されているようにbashだと補完が効かないので, compgenで補完候補を作る方が良さそう
https://mobile.twitter.com/mattn_jp/status/1434205359573405696

自分の場合は、gotoっていうコマンドよりcdで通常通り使えた方が良いので
こんな感じの設定を追加しておいた
cdコマンドを上書きして、@で始まってたら cd -P でsymlinkを辿るようにして、他は通常通り
(これなら補完候補も足さなくてOK)

export CDPATH=".:$HOME/.bookmarks"
function cd {
    if [[ ${1} =~ ^@ ]];then
        cd -P $1 || return 1
        return
    fi
    builtin cd "$@" || return 1
}

あと、bookmarkへの追加もコマンドにしておく
bookmarkしたいディレクトリに移動してbookmarkコマンドでsymlink作るようにしておく

function bookmark {
    local current_dir=$(pwd)
    ln -s $current_dir ~/.bookmarks/@$(basename $current_dir)
}