是否可以执行相对于Terminal shell脚本的命令?

时间:2012-02-13 11:39:52

标签: osx-lion

我有一个终端shell脚本文件start.command,我从finder启动:

ls -l

该文件位于~/foo但列出~,我是否可以获取包含dir的路径。我想在用户运行.command时启动与文件位于同一文件夹中的应用程序,但似乎我需要文件的绝对路径才能使用该文件。

1 个答案:

答案 0 :(得分:5)

假设使用bash,在运行cd之前,您需要ls到脚本的封闭目录。

你可以用它来单行:

cd "$(dirname "$0")"

$0是脚本的相对路径,即在命令行上用于调用它的任何内容。 dirname从路径中删除文件名。

$()是一个值扩展,可以提供给cd,并且引号都是处理路径中空格等内容所必需的。