cd でディレクトリに移動するときにシェル スクリプトを実行する

cd でディレクトリに移動するときにシェル スクリプトを実行する

特定のディレクトリに入ったときに、そのディレクトリでスクリプトを実行するように設定することは可能ですかcd?

たとえば、プロジェクト/fooを含むディレクトリの場合、スクリプトを自動的に実行するgitことは可能ですか?cd /foogit statusnpm

回答を に厳密にリンクしないでくださいgit。他のコマンド/スクリプトである可能性もあると考えてください。

答え1

cd必要な処理を追加する関数に置き換えることができます。

cd() {
    builtin cd "$@"
    # Do whatever you want here
}

答え2

私は、Stephen Kitt の回答に似たものを次のように使用しています.bashrc

function cd() {
  command cd "$@" || return

  if [[ -d .git ]]
  then
    git status --short
  else
    ls -al
  fi
}

必要に応じてさまざまなことを処理するための追加の条件を作成できます。

注意: コマンドへの参照を上書きするため、関数が自分自身を呼び出して永久に再帰するのを防ぐために、、、またはをcd使用する必要があります。このため、この関数の名前を変更すると便利だと感じる人もいるかもしれません。command cdbuiltin cd\cd

答え3

これを行う方法の 1 つは、aliasコマンドを使用することです。

alias cdgit="cd /foo; git status"

次に実行しcdgitてディレクトリに移動し/foo、execを実行しますgit status

関連情報