You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu系统安装fish shell后VS Code终端无法启动的问题求助

解决Ubuntu下VS Code无法找到fish shell的问题

嘿,这个问题我之前也碰到过,核心就是VS Code的终端配置和系统里fish的实际路径没对上,或者VS Code读取的环境变量和你外部终端的环境不一致。下面给你一步步的解决方法:

第一步:确认fish的真实安装路径

首先得搞清楚fish到底装在哪个位置——有时候echo $SHELL返回的路径不一定是实际可执行文件的位置(比如你改了默认shell,但二进制文件其实在别的目录)。

在外部终端里运行这条命令:

which fish

记下返回的路径,比如可能是/usr/local/bin/fish或者/usr/bin/fish

方法一:修改VS Code的终端配置(最推荐)

VS Code的终端配置有时候不会自动识别正确的fish路径,我们手动指定就行:

  1. 打开VS Code,按下Ctrl + ,(逗号)打开设置界面
  2. 在搜索框里输入terminal.integrated.defaultProfile.linux
  3. 如果下拉列表里没有fish选项,点击旁边的Edit in settings.json
  4. 在打开的settings.json文件中,添加或修改以下配置(把路径换成你刚才用which fish得到的实际路径):
    "terminal.integrated.defaultProfile.linux": "fish",
    "terminal.integrated.profiles.linux": {
      "fish": {
        "path": "/usr/bin/fish"
      }
    }
    
  5. 保存settings.json,重启VS Code后试试终端能不能正常打开。

方法二:创建软链接(如果路径确实不匹配)

如果which fish返回的是/usr/local/bin/fish,但VS Code一直找/usr/bin/fish,可以给fish创建一个软链接到/usr/bin目录下:

sudo ln -s /usr/local/bin/fish /usr/bin/fish

输入用户密码执行后,再打开VS Code终端应该就能识别到了。

方法三:关闭VS Code的沙箱模式(仅作为最后手段)

极少数情况下,VS Code的沙箱模式会限制对某些路径的访问,导致找不到shell。不推荐长期使用这个方法,但如果前面的方法都无效,可以试试:

  1. 完全关闭VS Code
  2. 在终端里用这条命令启动VS Code:
    code --no-sandbox
    

如果这样能正常打开终端,你可以把这个启动选项加到VS Code的桌面快捷方式里(编辑.desktop文件,把Exec行改成Exec=code --no-sandbox %F)。

至于为什么外部终端没问题?因为你外部终端直接用的是你的用户shell环境,能正确找到fish的路径,但VS Code的终端是单独启动的,会读取自己的配置或受限的环境变量,所以才会出现路径不匹配的情况。

内容的提问来源于stack exchange,提问作者German Cocca

火山引擎 最新活动