Bash、MariaDB、およびPHP 8.1がインストールされているCentOSではDrushを使用します。
Drushはコンテンツ管理システムDrupalのコマンドラインです。
Drushコマンドを実行するたびに、次のように作成します。
cd /home/www/example_1.com
vendor/bin/drush status
vendor/bin/drush cache:rebuild
または
cd /home/www/example_2.com
vendor/bin/drush status
vendor/bin/drush cache:rebuild
DrushコマンドがPATH
不要になるようにするにはどうすればよいですか?vendor/bin
export PATH=$PATH:vendor/bin
この道は行く道ですか?
答え1
1つの回避策(より良い方法がある可能性があります)は、$PATH
シェルプロンプトが表示されるたびに更新することです。これはPROMPT_COMMAND
環境変数(in bash
)を使用して達成できます。
したがって、次の関数を定義できます。
#You can modify this function to update the path
#only when the current directory is under '/home/www/website_folder'
checkPath() {
if [[ -z $OLDPATH ]]; then
OLDPATH="$PATH";
PATH="${PATH}:${PWD}/vendor/bin";
else
PATH="${OLDPATH}:${PWD}/vendor/bin"
fi
}
if条件は、コマンドが実行されるたびに新しいパスが追加されるのを防ぎます。したがって、ソース$PATH
+作業ディレクトリが常に$PWD/vendor/bin
どこにあるかを知ることができます。$PWD
そしてこれをシェルに設定します。
PROMPT_COMMAND='checkPath'
シェルプロンプトが表示されるたびに上記のコードを使用します(コマンドの実行が完了すると、PROMPT_COMMAND
内容(この場合はcheckPath関数)が実行されます)。
したがって、次のように入力すると:
cd /home/www/example_1.com
持っています$PATH
:
/home/www/example_1.com/vendor/bin
これを次のように変更するとexample_2.com
:
cd /home/www/example_2.com
#or
cd ../example_2.com
持っています$PATH
:
/home/www/example_2.com/vendor/bin
ダメージ
/home/www
この回避策を使用すると便利ですが、次のようなディレクトリに変更する場合$PATH
:
/home/www/vendor/bin
ご覧のとおり、$PATHには存在しないディレクトリがあるかもしれませんが、私が知っている限り、これはシェルに問題を引き起こしません。ただPATHが毎回変更されることを覚えておいてください。CD別のディレクトリへ)。存在する場合、/home/www/vendor/bin
このディレクトリのファイルはPATH
この変数によって識別されます。
drush
また、提供されたコマンドは、システムに完全にインストールされている場合(例:)は/usr/bin
機能しません。drush
/home/www/example_?.com/vendor/bin/
この問題に対する解決策は、追加する${PWD}/vendor/bin
代わりに前に追加することです$PATH
。
checkPath() {
if [[ -z $OLDPATH ]]; then
OLDPATH="$PATH";
PATH="${PWD}/vendor/bin:${PATH}";
else
PATH="${PWD}/vendor/bin:${OLDPATH}"
fi
}