我正在努力解决一个小问题,我以前从未写过 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/