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
動作しないか)。