不灭的焱

革命尚未成功,同志仍须努力 下载Java21

作者:AlbertWen  添加时间:2026-05-30 18:44:56  修改时间:2026-06-16 04:10:11  分类:04.电脑/软件使用  编辑

在 macOS 上,想让 shell 脚本双击执行,通常把脚本文件后缀改成:

.command

例如:

run.sh  →  run.command

然后给它执行权限:

chmod +x run.command

之后就可以在 Finder 里双击执行。


推荐脚本模板

#!/bin/zsh

# 自动切换到脚本所在目录
cd "$(dirname "$0")" || exit 1

echo "当前目录:$(pwd)"

# 你的命令写在这里
echo "开始执行..."

# 防止窗口一闪而过
echo "执行完成"
read "?按回车退出..."

如果你用的是 bash,也可以写:

#!/bin/bash

cd "$(dirname "$0")" || exit 1

echo "当前目录:$(pwd)"

# 你的命令
echo "Hello"

read -p "按回车退出..."

关键点解释

1. 双击执行

macOS Finder 里双击 .sh 文件,通常会用编辑器打开。

.command 文件双击时,会自动用 Terminal 执行。

所以文件名建议改成:

xxx.command

2. 自动切换到脚本所在目录

核心是这一句:

cd "$(dirname "$0")" || exit 1

含义是:进入当前脚本所在的文件夹。

这样你双击脚本时,不管 Terminal 默认打开在哪里,脚本都会先切换到自己的目录。

例如目录结构是:

MyTool/
├── run.command
├── config.txt
└── data/

你的脚本里可以直接写:

cat config.txt
ls data

不会因为双击执行时工作目录不对而找不到文件。


更稳妥的写法

如果你的路径里可能有中文、空格,推荐用这个版本:

#!/bin/zsh

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$SCRIPT_DIR" || exit 1

echo "脚本所在目录:$SCRIPT_DIR"

# 你的命令

如果双击提示权限不足

执行:

chmod +x /完整路径/run.command

例如:

chmod +x ~/Desktop/run.command

如果提示无法打开,来自未认证开发者或被系统拦截

确认脚本安全后,可以执行:

xattr -d com.apple.quarantine /完整路径/run.command

例如:

xattr -d com.apple.quarantine ~/Desktop/run.command

最小可用示例

保存为 run.command

#!/bin/zsh

cd "$(dirname "$0")" || exit 1

echo "我现在在脚本目录:"
pwd

ls

read "?按回车退出..."

然后执行一次:

chmod +x run.command

以后双击 run.command 就能运行,并且会自动切换到脚本所在目录。