次の内容を含むシェルスクリプトファイルがあります./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/postactivate
1108 という新しいプロセスを作成します。プロセス1108の呼び出しはexec
それ自体sudo
。したがって、PID1108は環境変数を設定する。sudo
sh
私自身のためにたとえば、STATIC_ROOTです。その後、終了します。 1108(PID 1003)を待っているシェルは新しいプロンプトを印刷しますが、PID 1003環境では何も変更されません。