GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリに入るときにBashスクリプトを実行しますか?

ディレクトリに入るときにスクリプトを実行する最良の方法は何ですか?
新しいディレクトリに移動するとき、RVMと同じようにbashでprojectSettings.bashスクリプトを実行したいと思います。

承認された回答:

cdを作成できます 関数(およびpop およびpushd )、その特定のディレクトリに入ったかどうかを検出させます。

cd () { builtin cd "[email protected]" && chpwd; }
pushd () { builtin pushd "[email protected]" && chpwd; }
popd () { builtin popd "[email protected]" && chpwd; }
unset_all_project_settings () {
  # do whatever it takes to undo the effect of projectSettings.bash,
  # e.g. unset variables, remove PATH elements, etc.
}
chpwd () {
  case $PWD in
    /some/directory|/some/other/directory) . ./projectSettings.bash;;
    *) unset_all_project_settings;;
  esac
}

ホワイトリストに登録されていないディレクトリでは、これを行わないでください。誰かがあなたをだまして任意のコードを実行させてしまう可能性があります。アーカイブを送信して、解凍し、作成したディレクトリに変更してください。攻撃者のコードを実行しました。

プロジェクトでの作業とは関係のない何らかの理由でそのディレクトリに入った場合でもスクリプトが実行されることを意味するため、このアプローチはお勧めしません。プロジェクトディレクトリを変更し、設定スクリプトを取得する特定の機能を用意することをお勧めします。

myproj () {
  cd /some/directory && . ./projectSettings.bash
}

Linux
  1. Bashスクリプトに.shまたは.bash拡張子を使用しますか?

  2. URLからbashスクリプトを実行

  3. root としても bash スクリプトを実行できませんか?

  1. パスに bash スクリプトを追加する

  2. Bash:そのようなファイルやディレクトリはありませんか?

  3. フォルダ内のすべてのシェル スクリプトを実行する

  1. 自動化のためのBashの使用

  2. BashスクリプトでCdを使用できないのはなぜですか?

  3. Bash はディレクトリを変更しなくなりました