私のコンピュータにServiceMixをインストールして起動しようとしています。起動スクリプトはstart.shと呼ばれます。これにより、./start.sh
「権限が拒否されました」というメッセージが表示されます。だから私はそれを使用し、sudo ./start.sh
サーバーが正常に起動しました。
ところで(いくつかの理由で)Java 6を使いたいのですが、Java 7を使用しているようです。私はstart.shスクリプトを見て、このJAVA_HOME
変数を使うことを発見しました。そのため、JAVA_HOMEをJDK 6ディレクトリに設定しました。
ただし、ServiceMixはまだJava 7を使用しています。
Googleの検索によると、sudoを使用してコマンドを実行すると、sudoは特定の環境変数を削除することがわかりました。だから私はそうでしたsudo -E ./start.sh
。 JDK 7を再利用します。
start.shを開き、echo $JAVA_HOME
変数が正しく設定されていることを確認するために1行を追加しました。出力はecho
空行です。
。Defaults env_keep += "JAVA_HOME"
今、start.shを実行すると、私のechoステートメントは空白行に戻ります。 ServiceMixはまだJDK 7を使用しています。
今すぐstart.shを実行しようとすると、/etc/profile
echoステートメントは空白行に戻ります。同様に、ServiceMix は JDK 7 を使用します。
私はここで何を間違えましたか?
FWIW、私はMac OS X 10.8.2を使用しています。echo $SHELL
私の端末の/bin/bashに戻ります。使用sudo su
して実行すると、echo $SHELL
/bin/sh が返されます。
答え1
次の手順を試してください。
/etc/profile.d
ディレクトリ内にset_java_path.sh
次の行を含むファイルという名前のファイルを作成します。export JAVA_HOME=<_complete_path_to_java6_directory_>
bash
上記の変更をロードするには、コマンドを一度実行してください。そしてstart.sh
スクリプトを実行してください。
編集する:
ディレクトリが存在しない場合は、同じ名前(権限:0755と所有者とグループのルート)でディレクトリを作成し、/etc/profile.d
ファイルに/etc/profile
次のコードを追加します。
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
答え2
環境変数をsudoerに保つには、Defaults env_keep += PATH
sudoerファイル(sudo visudo
)に追加します。