我有一个终端shell脚本文件start.command
,我从finder启动:
ls -l
该文件位于~/foo
但列出~
,我是否可以获取包含dir的路径。我想在用户运行.command
时启动与文件位于同一文件夹中的应用程序,但似乎我需要文件的绝对路径才能使用该文件。
答案 0 :(得分:5)
假设使用bash,在运行cd
之前,您需要ls
到脚本的封闭目录。
你可以用它来单行:
cd "$(dirname "$0")"
$0
是脚本的相对路径,即在命令行上用于调用它的任何内容。 dirname
从路径中删除文件名。
$()
是一个值扩展,可以提供给cd
,并且引号都是处理路径中空格等内容所必需的。