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

sal*_*inx 3 java macos bash shell

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

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

MyApp.app
   |_Contents
       |_Java
           |_MyApp.jar
       |_MacOS
           |_launch.sh
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)

启动 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"));
Run Code Online (Sandbox Code Playgroud)

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

任何如何正确更改 bash 脚本中的目录的想法都受到高度赞赏:) ...?!

mid*_*ori 5

尝试这样做:

cd "$(dirname "$0")/../Java"
SCRIPT_DIR=$(pwd)
Run Code Online (Sandbox Code Playgroud)