如何在vscode中集成终端并执行Shell命令【教程】

雨伟小哥_3725

雨伟小哥_3725

2026-01-17

633人浏览

原创

VS Code内置终端开箱即用,默认按Ctrl+`呼出,工作目录为打开文件夹根路径;支持多标签、shell切换及自动激活Python虚拟环境;路径和环境变量问题需按系统配置shell配置文件或PATH;命令卡住可用Ctrl+C中断或后台运行;tasks.json中命令失败因非交互式shell,需显式指定路径或注入PATH环境变量。

如何在vscode中集成终端并执行shell命令【教程】

VS Code 内置终端就是开箱即用的,不需要“集成”——你只需要知道它默认在哪、怎么调、为什么有时命令不生效。

终端快捷键和启动位置

按 Ctrl+`(反引号,在 Tab 上方)即可呼出或隐藏集成终端。它默认在编辑器底部面板中启动,工作目录是当前打开文件夹的根路径(即你通过 File → Open Folder 打开的那个目录)。

如果没反应,检查是否被系统或其他插件占用了该快捷键;也可以通过菜单栏 Terminal → New Terminal 手动创建。

  • 多个终端标签页可共存,用 Ctrl+Shift+` 新建一个
  • 右键终端标签页可重命名、复制路径、或选择 shell 类型(如 PowerShell、zsh、bash)
  • 终端启动后自动激活当前 workspace 的 Python 虚拟环境(如果有 .venv 或 venv 目录且配置了 python.defaultInterpreterPath)

执行 Shell 命令时路径和环境变量不对

常见现象:在资源管理器里双击进入子文件夹,但终端里 pwd 显示的仍是父目录;或者 npm run dev 报错说找不到命令——本质是终端没加载你的 shell 配置文件(如 ~/.zshrc),或 VS Code 启动时没读取系统 PATH。

解决方式取决于你的操作系统:

从 Git 仓库历史中彻底删除文件
从 Git 仓库历史中彻底删除文件

|Git删除了文件,但还会在Git 仓库历史中遗留。 - 想要从 Git 历史移除敏感信息(密码、密钥、token、私钥) - 想要删除意外提交的大文件 - 想要重写 Git 历史、移除特定文件的所有痕迹 - 提到 "force push"、"重写 commit 历史" - 需要从所有分支、所有 tag 中删除某个文件

下载
  • macOS:在 ~/.zprofile 中设置 PATH,并确保 VS Code 是从终端用 code . 启动(而非桌面图标),否则 shell 环境不会继承
  • Windows:检查 terminal.integrated.profiles.windows 设置中是否指定了正确的 PowerShell 或 Command Prompt 路径;若用 Git Bash,需手动添加 profile 并设为默认
  • Linux:多数桌面环境能正确继承,但若用 Snap 安装的 VS Code,会因沙盒限制无法读取 ~/.bashrc,建议改用 .deb 或官网 tarball 版本
{
  "terminal.integrated.profiles.linux": {
    "bash": {
      "path": "/bin/bash",
      "args": ["-l"] // 加 -l 参数让 bash 以登录模式启动,加载 ~/.bashrc
    }
  },
  "terminal.integrated.defaultProfile.linux": "bash"
}

终端里运行脚本或命令没反应 / 卡住

不是 VS Code 的问题,而是 shell 进程本身被阻塞了:比如你运行了 node server.js,服务没加 --watch 或后台标志,终端就一直占用着,没法输下一条命令。

  • 用 Ctrl+C 中断当前前台进程(别用鼠标点关闭按钮)
  • 需要长期运行又不想占终端?加 & 后台运行:npm run dev &;更稳妥用 npx concurrently 或 nodemon --quiet
  • 想保留输出日志还方便查看?重定向到文件:npm test > test.log 2>&1
  • 终端编码异常(中文变问号)?检查 terminal.integrated.env.linux 是否设置了 LANG=en_US.UTF-8

为什么某些命令在终端可用,但在 tasks.json 里就失败

因为 tasks.json 默认使用非登录、非交互式 shell,不加载用户配置,PATH 更精简。例如全局安装的 pnpm 在终端里能用,但 task 里提示 command not found。

两个务实解法:

  • 显式写全路径:/home/username/.local/bin/pnpm install(用 which pnpm 查)
  • 在 task 配置里注入环境变量:
    {
      "version": "2.0.0",
      "tasks": [{
        "label": "install",
        "type": "shell",
        "command": "pnpm install",
        "options": {
          "env": {
            "PATH": "/home/username/.local/bin:/usr/local/bin:${env:PATH}"
          }
        }
      }]
    }

真正麻烦的是跨平台 task:Windows 的 %USERPROFILE% 和 macOS 的 $HOME 不通用,这时别硬拼 PATH,优先用 VS Code 提供的变量如 ${env:HOME} 或 ${env:USERPROFILE}。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

2195

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

3482

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

1156

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

3999

7

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

4596

8

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.28

1395

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1818

5

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

2023.08.17

10143

11

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

1000

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习