1

私の場合、$ HOME変数を使用してインスタンスの起動時にアプリケーションサーバーのパスを特定しようとしています。

$ HOME変数を使用するスタートアップスクリプトを使用してGoogleコンピューティングエンジンを使用しています。しかし、$ HOMEが設定されていないか、スタートアップスクリプトがGoogleクラウドで実行されている間、ユーザーは作成されません。

$HOME not setエラーが発生します。このための回避策はありますか?今度は、初めて作成した後でインスタンスを再起動する必要があります。そのため、再起動時に$ HOME変数が設定されます。しかし、これは生産のための醜いハックです。

誰かが私にこれを手伝ってもらえますか?

+0

私の答えをテストする機会がありましたか?それは働いたのですか? – GalloCedrone

答えて

0

ユーザがまだ作成されておらず、ユーザがログインしていない場合、スタートアップスクリプトはrootとして実行されます(起動時に起動して確認できます)。$ cat /etc/shadowの再起動後の出力を比較します。

正直なところ、私はちょうど再起動があなたの$HOME Linux上のため、起動時に移入することができますどのように、HOME環境変数がログインプログラムによって設定されている理解していない:コンソールにログインで

  • は、telnet rloginセッション
  • SSHの場合はsshd
  • グラフィカルセッションの場合はgdm、kdmまたはxdmで接続します。

再起動する必要があり、あなたはそれを手動で行うにはしたくない場合は、あなたがマシンの作成後に一度だけ再起動することができます。一方

if [ -f flagreboot ]; then 
... 
your script 
... 
else 
touch flagreboot 
reboot 
fi 

あなたがしている知っていればあなたのアプリケーションの$HOMEパスになるでしょう。起動時にこの変数をエクスポートして手動で入力すると考えることができます。

$ export HOME=/home/username 
関連する問題