atom的script插件默认不连接交互式终端,导致含input()等输入语句的脚本卡死或跳过;需在设置中勾选use terminal并确保从终端启动atom以继承完整path。

Atom 的 script 插件默认不连交互式终端,运行含 input()、read -p 或 Node.js 的 prompt() 的脚本会直接卡死或跳过输入 —— 这不是代码问题,是执行模式没配对。
为什么 script 插件运行 Python/Shell 脚本没反应?
常见现象:点 Ctrl+Shift+B 后底部面板一闪而过,或显示 “Process exited with code 0” 却没输出;更典型的是 Python 脚本卡在 input() 处不动。
根本原因:script 默认用非交互式子进程执行命令(类似 sh -c "python script.py"),标准输入被关闭,无法响应键盘输入。
- 必须手动启用终端模式:运行前按
Ctrl+I(Win/Linux)或Cmd+I(macOS) - 或者进 Settings → Packages →
script→ 勾选Use Terminal(注意不是Use Script Panel) - 勾选后每次运行复用同一终端窗口,但当前工作路径不会自动切到文件所在目录 —— 需手动
cd或提前在终端里cd到项目根目录
Python 脚本报 python: command not found 怎么办?
这不是插件故障,而是它默认调用系统 PATH 中的 python 命令;但 macOS 12.3+ 已移除系统自带 python,conda/pyenv 用户通常只有 python3,Homebrew 安装的也默认是 python3。
- 别改系统软链接,直接在
script插件 Settings 里填Command的绝对路径 - macOS Apple Silicon:填
/opt/homebrew/bin/python3 - macOS Intel:填
/usr/local/bin/python3 - Linux:常用
/usr/bin/python3或/usr/bin/env python3 - Windows:路径用正斜杠,如
C:/Users/me/AppData/Local/Programs/Python/Python311/python.exe
script 插件识别不了 .sh / 无后缀脚本怎么办?
script 靠文件后缀 + Atom 当前语言模式双重判断:即使文件叫 deploy(无后缀),只要 Atom 状态栏显示为 Bash,它就能匹配到 Bash 解释器并运行。
- 临时切换语言:按
Ctrl+Shift+L(Win/Linux)或Cmd+Shift+L(macOS),输入Bash回车 - 永久绑定后缀:Settings → Packages →
script→File Extensions里加sh,bash,py,js,ts(注意全小写,SH在某些系统不生效) - 右下角状态栏点当前语言名(如
Plain Text),从列表选对应语言 —— 这是最快速的救急方式
Node.js 脚本报 Cannot find module 'xxx' 是路径问题吗?
大概率是。script 插件默认以 Atom 启动时的工作目录为 cwd,不是当前文件所在目录。如果你在项目子目录打开 index.js,但 node index.js 依赖 ./lib/utils.js,而 package.json 和 node_modules 在上层目录,就会找不到模块。
- 最稳方案:从终端启动 Atom,比如进入项目根目录后执行
atom .,这样 script 继承的cwd就是项目根 - 次选:在
scriptSettings 里设置Cwd字段为$file_path(当前文件目录)或$project_path(项目根目录) - 避免用
$file_dirname这类变量,部分版本不支持;优先用$file_path
真正容易被忽略的是环境变量继承问题:从桌面图标或 Spotlight 启动的 Atom,PATH 里往往没有 pyenv/conda/nvm 加的路径 —— 所有“命令找不到”类报错,第一反应不该是重装插件,而是确认 Atom 是否从终端启动。










