每次打开远程工作空间时,集成 shell 变回 bash
Integrated shell changes back to bash every time I open remote workspace
我尝试将 ZSH 配置为用于集成终端的默认 shell。但是,即使在连接到远程工作区(在 linux 机器上)时将 ZSH 设置为默认配置文件,每次都会打开 bash。
这是我的本地设置配置 (/Users/ewiener/Library/Application Support/Code/User/settings.json
):
"terminal.integrated.profiles.linux": {
"zsh (login)": {
"path": "zsh",
"args": [
"-l"
]
},
"zsh": {
"path": "/usr/local/bin/zsh",
},
},
"terminal.integrated.defaultProfile.linux": "zsh (login)",
"terminal.integrated.defaultProfile.osx": "zsh",
"terminal.external.osxExec": "iTerm.app",
"terminal.integrated.fontFamily": "MesloLGS NF",
我的远程服务器没有在 /home/ewiener/.vscode-server/data/Machine/settings.json
中设置终端设置。
工作区设置也没有终端设置(/home/ewiener/myrepo/.vscode/settings.json
)
连接到远程工作区时,如何确保 ZSH 已打开?即使我手动 select ZSH 作为 shell,如果我关闭并重新打开工作区,它将恢复为 bash。
更新答案:
我原来的答案并不总是对我有用,所以我决定让我的 .bashrc
在 VSCode 打开 shell 时将 shell 更改为 zsh ].您可以通过将以下内容添加到 .bashrc
的顶部来执行此操作:
if [[ "$TERM_PROGRAM" == "vscode" ]]; then
# ~/.profile is run by the login shell (this is what ssh uses)
# ~/.bashrc is run by the interactive shell (this is what vscode uses)
# Therefore, we only need to change the shell to zsh here since
# vscode will run ~/.bashrc for us.
exec zsh -l
fi
原答案:
我意识到正确的终端在本地打开,问题只发生在远程工作区。这导致我修改了最终提供解决方案的 SSH 配置。
您可以修改 SSH 配置并设置要用于特定主机的终端。
- 使用命令面板(CMD/CTRL + SHIFT + P)打开
Remote-SSH: Open SSH Configuration File..
- 选择您要编辑的配置文件。
- 更新您要更改使用的默认终端的主机
SetEnv TERM=<terminal>
例如:
# /Users/username/.ssh/config
Host linux-server
HostName 00.00.00.00
User username
SetEnv TERM=/usr/local/bin/zsh # <---- this will update your terminal
确保您是在本地计算机(而不是远程服务器)上编辑 .ssh/config
。
编辑
请注意,自 OpenSSH 7.8 起支持 SetEnv 指令(检查 sshd -V
)。 Source
我尝试将 ZSH 配置为用于集成终端的默认 shell。但是,即使在连接到远程工作区(在 linux 机器上)时将 ZSH 设置为默认配置文件,每次都会打开 bash。
这是我的本地设置配置 (/Users/ewiener/Library/Application Support/Code/User/settings.json
):
"terminal.integrated.profiles.linux": {
"zsh (login)": {
"path": "zsh",
"args": [
"-l"
]
},
"zsh": {
"path": "/usr/local/bin/zsh",
},
},
"terminal.integrated.defaultProfile.linux": "zsh (login)",
"terminal.integrated.defaultProfile.osx": "zsh",
"terminal.external.osxExec": "iTerm.app",
"terminal.integrated.fontFamily": "MesloLGS NF",
我的远程服务器没有在 /home/ewiener/.vscode-server/data/Machine/settings.json
中设置终端设置。
工作区设置也没有终端设置(/home/ewiener/myrepo/.vscode/settings.json
)
连接到远程工作区时,如何确保 ZSH 已打开?即使我手动 select ZSH 作为 shell,如果我关闭并重新打开工作区,它将恢复为 bash。
更新答案:
我原来的答案并不总是对我有用,所以我决定让我的 .bashrc
在 VSCode 打开 shell 时将 shell 更改为 zsh ].您可以通过将以下内容添加到 .bashrc
的顶部来执行此操作:
if [[ "$TERM_PROGRAM" == "vscode" ]]; then
# ~/.profile is run by the login shell (this is what ssh uses)
# ~/.bashrc is run by the interactive shell (this is what vscode uses)
# Therefore, we only need to change the shell to zsh here since
# vscode will run ~/.bashrc for us.
exec zsh -l
fi
原答案:
我意识到正确的终端在本地打开,问题只发生在远程工作区。这导致我修改了最终提供解决方案的 SSH 配置。
您可以修改 SSH 配置并设置要用于特定主机的终端。
- 使用命令面板(CMD/CTRL + SHIFT + P)打开
Remote-SSH: Open SSH Configuration File..
- 选择您要编辑的配置文件。
- 更新您要更改使用的默认终端的主机
SetEnv TERM=<terminal>
例如:
# /Users/username/.ssh/config
Host linux-server
HostName 00.00.00.00
User username
SetEnv TERM=/usr/local/bin/zsh # <---- this will update your terminal
确保您是在本地计算机(而不是远程服务器)上编辑 .ssh/config
。
编辑
请注意,自 OpenSSH 7.8 起支持 SetEnv 指令(检查 sshd -V
)。 Source