以下のスクリプトを理解しようとしていますが、su行について混乱しています。 postgresコマンドライン引数を理解しています。
man su
をするとき マニュアルには
-c、–command =COMMAND
-cを使用して単一のコマンドをシェルに渡します
ただし、su - postgres -c ...
の行 2つのコマンドが含まれているようです
- 最初にLD_LIBRARY環境変数を設定します
- pg_ctlを呼び出す2番目の方法
それで、-cで渡される2つのコマンドまたは1つのコマンドがありますか?
start()
{
echo $"Starting PostgreSQL 9.1: "
su - postgres -c "LD_LIBRARY_PATH=/opt/PostgreSQL/9.1/lib:$LD_LIBRARY_PATH /opt/PostgreSQL/9.1/bin/pg_ctl -w start -D \"/opt/PostgreSQL/9.1/data\" -l \"/opt/PostgreSQL/9.1/data/pg_log/startup.log\""
if [ $? -eq 0 ];
then
echo "PostgreSQL 9.1 started successfully"
exit 0
else
echo "PostgreSQL 9.1 did not start in a timely fashion, please see /opt/PostgreSQL/9.1/data/pg_log/startup.log for details"
exit 1
fi
}
承認された回答:
これは、シェルに渡される単一のコマンドです。シェルを使用すると、コマンドごとに環境変数を設定できます。例:
PGPORT=5433 psql
su
引数を使用してシェルを呼び出すため、次のようになります。
su -c 'PGPORT=5433 psql'
やっているようなものです:
su
exec bash -c 'PGPORT=5433 psql'
率直に言って、私はsudoを使用する傾向があります。これにより、環境変数の設定が簡単になり、シェルを経由しないため、複雑な引用符を使用したコマンドを適切に処理できます。
ランダムな「ローカル選択による認証解除(理由:3 =deauth_leaving)」?
Linux – LenovoEdge13の仮想ボックスにArchをインストールするための適切なディスプレイドライバーを見つけますか?