我正在使用Apple的automator来创建一个Shell脚本。如果我将目录专门更改为jar文件所在的位置,我可以运行它。但是,如果我想将目录更改为Shell脚本恰好在哪里运行,该怎么办?
现在我有以下内容,有效:
cd desktop/CommonDenom/
java -XstartOnFirstThread -jar CommonDenom.jar
我知道有一种方法可以定位Shell脚本启动的任何目录,但我似乎无法正常工作。请具体说明,因为我没有使用Automator很长时间。除非有人能指定如何在没有Automator的情况下编写脚本。提前谢谢。
答案 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.的信用