1

私の問題は次のようなものです(OSはSun Solarisです):

  1. 起動時に、特定のスクリプトを使用してプロセスを開始したいと考えています。私はこのスクリプトを入れて/etc/init.d(そして他の K と S のルールに従って) これを行っています。

  2. スクリプトによって呼び出されるプログラムは、場所にあり$HOME/xxx/yyyます。

  3. 'su - {myuser} -c "{full path of the program}"'スクリプトを {myuser} として実行するために使用しています。

  4. スクリプトで $HOME の値をハードコーディングしたくありませんが、$HOME環境変数のみを使用したいと考えています。$HOMEシェルスクリプトでこの環境変数を取得するにはどうすればよいですか? また、他にどのような変数を利用できますか?

4

3 に答える 3

3

Just put

env > env.txt

in the script. After running your script the env.txt file contains all environment variables.

于 2010-04-08T09:46:39.250 に答える
2

ユーザーのホーム変数を取得するには、次のハックを試してください。

HOME=`sudo -u myuser -s "cd ~; pwd"`
于 2010-04-08T21:23:20.263 に答える
1

2)どのユーザーの$ HOMEですか?ルートの$HOMEまたはmyuserの$HOME

myuserのホームの場合は、子スクリプトで$ HOMEを使用し、init.dスクリプトでは使用しないでください。これは、開始するシェルプロセスによって設定されます。あなたがそうするとき、あなたはsu - {myuser}myuserのログインシェル(/ etc / passwdで定義されている)を実行するようにsuに指示しています。ログインシェルは、シェルが何であるかに基づいてデフォルトの環境変数を設定します。詳細については、シェルのドキュメントを参照してください。Solarisでは、これはおそらくkshまたはbourneシェルです。

3)実行しsu - myuser -c /usr/bin/envます。これにより、子スクリプトで設定される環境変数が出力されます。

于 2010-04-15T04:46:11.843 に答える