PATHにDrushを追加するには?

PATHにDrushを追加するには?

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 

}

関連情報