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

Kit*_*nde 1 osx-lion

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

ls -l
Run Code Online (Sandbox Code Playgroud)

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

NRe*_*ngh 5

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

你可以用这个单行:

cd "$(dirname "$0")"
Run Code Online (Sandbox Code Playgroud)

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

$()是一个值来扩展cd,并且引号都是处理路径中空格之类的东西所必需的.