java - 如何在 Mac OS X 上的 bash 脚本中更改当前工作目录?

标签 java macos bash shell

我正在努力解决一个小问题,我以前从未写过 bash 脚本,对于知道如何正确完成的人来说这可能是一件小事。

我有以下文件夹结构(无法更改):

MyApp.app
   |_Contents
       |_Java
           |_MyApp.jar
       |_MacOS
           |_launch.sh

launch.sh 脚本应该启动 MyApp.jar 可执行文件,目前看起来如下:

#!/bin/bash
SCRIPT_DIR=$(cd "$(dirname "$0")/../Java"; pwd)
exec "$SCRIPT_DIR/jre/bin/java" -Xms256m -XX:PermSize=64m -jar "MyApp.jar"

启动 launch.sh 脚本时,第二行应将当前工作目录从 MyApp.app/Contents/MacOS 更改为 MyApp.app/Contents/Java为了随后调用 java -jar MyApp.jar(第 3 行)并将其正确的根目录作为工作目录...

但是一旦 MyApp.jar 启动,我就会打印出我的 Java 应用程序中的当前工作目录:

System.out.println(System.getProperty("user.dir"));

... 并打印出 launch.sh 脚本的目录,即 MyApp.app/Contents/MacOS 而不是 MyApp.app/Contents/Java .

非常感谢任何关于如何在 bash 脚本中正确更改目录的想法:) ...?!

最佳答案

尝试这样做:

cd "$(dirname "$0")/../Java"
SCRIPT_DIR=$(pwd)

关于java - 如何在 Mac OS X 上的 bash 脚本中更改当前工作目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27045979/

相关文章:

java - 我的代码未显示 kaprekar 编号所需的结果

java - 使用反射的参数化私有(private)构造函数

python - Mac 上的不同 Python 安装

regex - Linux Bash 脚本正则表达式故障

python - 我如何在 linux 中拆分 "who -m"命令的输出?

java - 对于下面的 java 演示,我该如何制作才能使方法不是静态的?

java - Android 将 Recyclerview 复选框中的值发送到数据库

bash - 如何在 bash shell 脚本中容纳变量中的空格?

OS X 的 c++ 14 编译器

java - unix/linux 无法解压缩用于 Elasticsearch 的文件