在标准的 Linux 命令行中,并没有一个名为 start 的内置命令或核心程序。

这个命令是 Windows 系统中特有的,在 Windows 的 cmd.exe 命令提示符中,start 命令用于启动一个单独的窗口来运行指定的程序或命令。
为什么你会在 Linux 中看到 start 命令?
这通常有以下几种情况:
- 你在使用 WSL (Windows Subsystem for Linux):在 WSL 环境中,为了方便地调用 Windows 程序,
start命令被作为一个兼容性命令提供,它的作用是在 Windows 端启动一个程序。 - 你安装了某个特定软件包:某些软件包可能会为了兼容性或特定功能而提供一个
start命令,但这非常罕见。 - 你写了一个名为
start的脚本:用户自己创建的脚本文件。
鉴于 start 在 Linux 中不是一个标准命令,下面我将重点讲解它在 WSL 环境下的用法,因为这是最常见和最有价值的场景,之后,我会介绍在 Linux 中实现类似 start 功能(即“后台运行”)的标准方法。
start 命令在 WSL 中的用法
在 WSL 中,start 命令的主要作用是将命令传递给 Windows 系统去执行,它相当于一个桥梁,让你可以在 Linux 终端里无缝地启动 Windows 应用或程序。

基本语法
start [选项] "标题" 命令/程序名 [参数]
选项:控制启动方式(如min最小化,max最大化,d使用默认目录等)。- 为新启动的窗口指定一个标题(可选,但推荐,特别是当路径或命令包含空格时)。
命令/程序名:这是要执行的 Windows 命令或可执行文件的路径。[参数]:传递给命令或程序的参数。
常见用法示例
打开一个 Windows 文件夹
# 在 Windows 资源管理器中打开当前 WSL 目录对应的 Windows 路径 start . # 打开特定的 Windows 文件夹 start "C:\Users\YourUser\Documents"
启动 Windows 应用程序
# 启动记事本 start notepad.exe # 启动计算器 start calc.exe # 启动一个特定的程序,并带上参数 # 用记事本打开一个配置文件 start notepad.exe "C:\my_app\config.ini"
使用选项
# 启动记事本,并使其窗口最大化 start max notepad.exe # 启动一个程序,但不等待它结束,直接返回 Linux shell # 这在 WSL 中是默认行为,但可以明确使用 /b (background) 选项 start /b notepad.exe
打开网页

# 使用默认浏览器打开一个网址 start https://www.google.com
重要提示:在 WSL 中,start 命令查找的是 Windows 系统中的程序,如果你想在 Linux 中启动一个 Linux 程序(gedit 或 firefox),你应该直接运行 gedit 或 firefox,而不是 start gedit。
在标准 Linux 中实现“启动”程序的功能
在标准的 Linux 环境中,我们通常使用不同的命令来实现类似 Windows start 的功能,核心思想是将任务放到后台运行。
& (Ampersand) - 最简单的方式
在命令的末尾加上 & 符号,就可以让命令在后台运行,并立即返回命令行提示符。
# 在后台打开一个文本编辑器 gedit gedit & # 在后台解压一个大型压缩包 unzip large_file.zip & # 查看后台任务 jobs
特点:
- 命令会继承当前终端的输入/输出。
- 如果命令有输出,它会直接打印到你的终端上,可能会干扰你当前的操作。
- 如果你关闭了启动它的终端,这个后台任务通常会被终止。
nohup (No Hang Up) - 让命令忽略终端关闭
nohup 命令可以让程序忽略 SIGHUP(挂断)信号,这意味着即使你关闭了终端,程序也会继续运行。
# nohup 默认会将命令的输出重定向到一个名为 nohup.out 的文件中 nohup long_running_script.sh & # 你也可以指定输出文件 nohup long_running_script.sh > my_output.log 2>&1 &
特点:
- 程序在完全独立于终端的后台运行。
- 即使终端关闭,程序也会继续执行。
- 输出会被重定向到文件,不会干扰你的终端。
disown - 从 shell 的任务列表中移除
disown 是 bash 内置的一个命令,它可以将一个已存在的后台任务从 shell 的作业表中移除,这样它就不会受到终端关闭的影响。
# 1. 先在后台运行一个任务 sleep 300 & # 2. 查看任务 ID jobs # [1] + running sleep 300 # 3. 从作业表中移除该任务 disown -h %1 # %1 是任务 ID # 4. 现在关闭终端,sleep 命令会继续运行
screen 或 tmux - 终端复用器(最强大的方式)
screen 和 tmux 是两个强大的终端复用工具,它们可以创建一个持久的会话,你可以在其中运行程序,即使你断开连接,这个会话和其中的程序也会继续运行,你可以随时重新连接回来。
使用 tmux (推荐):
# 1. 创建一个新的 tmux 会话 tmux new -s my_session # 2. 在新会话中运行你的程序,比如一个长时间运行的脚本 ./long_running_script.sh # 3. 按 Ctrl+B,然后按 D,可以分离(detach)会话,回到你的主终端 # long_running_script.sh 仍在 my_session 会话中继续运行 # 4. 查看所有会话 tmux ls # 5. 重新连接到会话 tmux attach -t my_session
特点:
- 功能最强大,可以管理多个终端窗口和会话。
- 提供了持久化的能力,非常适合服务器管理。
- 可以轻松地断开和重连。
总结对比
| 命令/工具 | 主要用途 | 适用环境 | 特点 |
|---|---|---|---|
start |
在 WSL 中调用 Windows 程序 | WSL | 桥接 Windows 和 Linux,不是 Linux 原生命令。 |
& |
在后台运行一个命令,立即返回 | 任何 Linux Shell | 简单,但终端关闭任务可能终止。 |
nohup |
让命令在后台持续运行,忽略终端关闭 | 任何 Linux Shell | 保证任务在后台持续运行,输出重定向到文件。 |
disown |
将已运行的后台任务与终端解绑 | Bash/Zsh 等 | 在任务运行后使用,灵活性高。 |
tmux / screen |
创建持久化的终端会话 | 任何 Linux Shell,尤其服务器 | 功能最全面,可断开/重连,管理复杂任务。 |
- 如果你使用 WSL,
start是一个非常有用的工具,用于启动 Windows 应用。 - 如果你使用标准的 Linux 系统,并且想要实现“启动程序后立即返回”的功能,请使用
&。 - 如果你需要确保程序在关闭终端后继续运行,请使用
nohup或tmux/screen。tmux/screen是更现代、更强大的解决方案。
