OSX如何将Shell脚本更改目录更改为脚本所在的目录?

时间:2014-03-09 16:10:40

标签: java macos shell jar automator

我正在使用Apple的automator来创建一个Shell脚本。如果我将目录专门更改为jar文件所在的位置,我可以运行它。但是,如果我想将目录更改为Shell脚本恰好在哪里运行,该怎么办?

现在我有以下内容,有效:

cd desktop/CommonDenom/
java -XstartOnFirstThread -jar CommonDenom.jar

我知道有一种方法可以定位Shell脚本启动的任何目录,但我似乎无法正常工作。请具体说明,因为我没有使用Automator很长时间。除非有人能指定如何在没有Automator的情况下编写脚本。提前谢谢。

4 个答案:

答案 0 :(得分:3)

shell脚本中的标准惯用法是dirname $0$0变量是执行脚本的路径,dirname命令采用路径并剥离最后一个组件以留下包含目录的路径

cd "`dirname $0`"

答案 1 :(得分:1)

只想在这里称重。我见过有些人有这个问题。如果您只是在OSX上并制作自己的脚本。这将成为一种伎俩:)一种黑客,但就像一个魅力。

#! /bin/bash 

sudo /Applications/XAMPP/xamppfiles/xampp startapache

open /Applications/XAMPP/htdocs

答案 2 :(得分:0)

我不确定您的意思是“您希望将目录更改为运行脚本的位置”,因为无论如何您都将在脚本运行的目录中,因此无需更改目录。我想你的意思是你希望脚本保留在它开始的任何地方,但仍然能够找到jar文件。

在这种情况下,您可能需要以下内容而不需要更改目录:

java -XstartOnFirstThread -jar ~/Desktop/CommonDemon/CommonDemon.jar

答案 3 :(得分:0)

#!/bin/bash
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
cd "${DIR}"

...the rest of your script...

IanDifferent:https://apple.stackexchange.com/a/179064

致Ian C.的信用