シェルスクリプトで環境変数が設定されていないようです。

シェルスクリプトで環境変数が設定されていないようです。

次の内容を含むシェルスクリプトファイルがあります./bin/postactivate

#!/bin/sh

export STATIC_ROOT="/webapps/tsango/static/"
export MEDIA_ROOT="/webapps/tsango/media/"
export DATABASE_NAME="tsango"
export DJANGO_SETTINGS_MODULE="tsango.settings.vagrant"
export DATABASE_PASSWORD="password"
export BROKER_URL="amqp://tsango:password@localhost/tsango"
export DATABASE_USER="tsango"

command として実行しますsudo sh ./bin/postactivate。コマンドが正しく実行されているようです。つまり、コマンドラインに出力がありません。

ただし、環境変数のリストを表示するために使用すると、printenvスクリプト変数は1つも設定されません。

私が何かを逃したことがあるかもしれません...何か教えていただけますか?

答え1

スクリプトを次のように呼び出す必要があります。

source bin/postactivate

プロセスには環境変数があります。シェルのプロセスIDが1003であるとします。 .PID 1003 フォークを呼び出して、sudo sh ./bin/postactivate1108 という新しいプロセスを作成します。プロセス1108の呼び出しはexecそれ自体sudo。したがって、PID1108は環境変数を設定する。sudosh私自身のためにたとえば、STATIC_ROOTです。その後、終了します。 1108(PID 1003)を待っているシェルは新しいプロンプトを印刷しますが、PID 1003環境では何も変更されません。

関連情報