VS Code tmux会话终端code命令报错‘command not found’解决咨询
code命令的问题 我之前也碰到过一模一样的问题!其实核心原因就是tmux和普通终端加载shell配置文件的逻辑不一样,导致环境变量PATH没同步上,所以普通终端能找到code,tmux里却不行。给你一步步捋清楚解决思路:
第一步:确认code的实际路径
先回到能正常运行code的普通终端,执行以下命令找到code的安装路径:
which code
你会得到类似这样的输出,比如/usr/local/bin/code或者~/Library/Application Support/Code/bin/code,记下来这个路径所在的目录(比如前面例子里的/usr/local/bin)。
第二步:对比tmux和普通终端的PATH
切换到tmux会话里的终端,执行:
echo $PATH
看看输出里有没有刚才记下的那个目录。如果没有,那就是问题的根源——tmux的PATH里没包含VS Code的命令目录。
第三步:针对性修复
根据你shell配置文件的情况,选下面的方法之一:
方法1:让tmux加载交互式shell配置
如果你的PATH是在~/.bashrc里配置的(bash的非登录交互式shell会加载这个文件),但tmux默认启动的shell没加载它,那可以修改tmux配置:
- 编辑
~/.tmux.conf文件(如果没有就新建一个) - 添加这一行:
set-option -g default-command "bash -i"
- 保存后,重启tmux或者在tmux里按
Ctrl+B然后输入:source ~/.tmux.conf生效。
方法2:同步登录shell和交互式shell的配置
如果你的PATH是在~/.bash_profile或~/.profile里配置的(只有登录shell才会加载这些文件),那可以让~/.bashrc去加载这些配置:
- 编辑
~/.bashrc,添加一行:
source ~/.bash_profile
(如果你的配置文件是~/.profile就改成source ~/.profile)
2. 保存后,重启tmux或者在tmux里执行source ~/.bashrc生效。
方法3:直接在tmux配置里添加PATH
如果上面两种方法都不想改,也可以直接在tmux配置里把VS Code的命令目录加到PATH里:
- 编辑
~/.tmux.conf - 添加这一行(把
/usr/local/bin换成你第一步找到的目录):
set-environment -g PATH "/usr/local/bin:$PATH"
- 同样重启tmux或者source配置文件生效。
最后验证
做完上面的操作后,在tmux里再试试code -r something.dat,应该就能正常打开文件啦!
内容的提问来源于stack exchange,提问作者koalourou

