简短版本:我想从结果中取出最后两个组件,readlink -f
并使用一行 BASH 脚本将其存储在一个变量中。
长版:我想要一行 BASH 脚本来设置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%/*/*}"
编辑:现在唯一的问题是它是两行。我已经接受了下面的答案,使它成为一个,但它仍然只能在 Linux 上运行,而在 OS X 上,必须./Commands/java_home
从这里运行才能获得真正的目录。
额外的功劳:让它在 OS X 上工作(在哪里readlink -f
不工作)。