%2Fsub_directory%2F.bin%20%E3%82%92%E5%90%AB%E3%82%81%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
パスが~/dev/project1/node_modules/.bin/ionic
存在し、私の作業ディレクトリがある場合は、~/dev/project1
ionicと入力してEnterキーを押すことができます。
これらのサブディレクトリはすべてPATHに含めることができますが、よりきれいな方法があるかどうか疑問に思います。私のパスには常に現在の作業ディレクトリに相対的なサブディレクトリが含まれるようにいくつかの魔法を追加したいと思います。
そのサブディレクトリのすべての親ディレクトリを検索してすべてのパスに追加できるようにする場合は、ボーナスポイントがあります。
答え1
検索パスに相対パスを配置できます。これは、プロジェクトの一部ではないディレクトリにあるときに予期しないバイナリを実行できる可能性があるため、危険です。マルチユーザーシステムではこれを実行しないでください。
PATH=…;node_modules/.bin/ionic;…
セキュリティと柔軟性を高めるために、現在のディレクトリが変更されるたびに検索パスを変更できます。あなたの.bashrc
:
cd () { builtin cd "$@" && chpwd; }
pushd () { builtin pushd "$@" && chpwd; }
popd () { builtin popd "$@" && chpwd; }
chpwd () {
if [[ $PATH = */node_modules/.bin/ionic ]]; then
PATH=${PATH%:*}
fi
if [[ $PWD =~ ^"$HOME/dev/"[^/]* ]]; then
project_root=${BASH_REMATCH[0]}
PATH=$PATH:${project_root}/node_modules/.bin/inoic
fi
}
chpwd