0

readlink -f短いバージョン: の結果から最後の 2 つのコンポーネントを取り出し、1 行の BASH スクリプトを使用して変数に格納したいと考えています。

詳細バージョン: BASH スクリプトの 1 行で、 EC2 コマンドライン ツールJAVA_HOMEの変数を設定したいと思います。この変数は、Java のホーム ディレクトリの場所を格納します。以下を使用して、バイナリへの絶対パスを取得できます。java

$ readlink -f $(which java)

私のテスト マシンでは、次のように出力されます。

/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java

「/bin/java」を切り取る必要があることを除けば、これで完璧です。次のように、文字列置換を使用してプロファイルでこれを行うことができます。

JAVA_HOME=$(readlink -f $(which java))
export JAVA_HOME="${JAVA_HOME%/*/*}"

EDITED:これに関する唯一の問題は、2行であることです。以下の回答を受け入れて1つにしましたが、それでもLinuxでのみ機能しますが、OS Xでは実際のディレクトリ./Commands/java_homeを取得するにはこれから実行する必要があります。

追加クレジット: OS X で動作するようにします (どこでreadlink -f動作しないか)。

4

3 に答える 3

5
dirname $(dirname $(readlink -f $(which java)))
于 2013-11-07T21:21:48.170 に答える
1

Mac OS X バージョンの場合は、次を試してください。

dirname $(dirname $(perl -e "use Cwd; print Cwd::abs_path('$(which java)')"))
于 2013-11-07T21:31:07.843 に答える
0

/bin/javaこれは、MAC OSX(未テスト)でも抽出に機能するはずです

echo ${JAVA_HOME##${JAVA_HOME%/*/*}}

于 2013-11-07T21:31:03.097 に答える