【问题标题】:How does Visual Studio Code (VSCode) know environment variables set in ~/.config/fish/config.fish?Visual Studio Code (VSCode) 如何知道 ~/.config/fish/config.fish 中设置的环境变量?
【发布时间】:2020-02-11 17:07:51
【问题描述】:
环境:
- macOS 卡塔利娜
- Visual Studio 代码
- 鱼壳
我使用 fish 作为默认 shell,几乎每个环境变量,包括 $PATH,都设置在 ~/.config/fish/config.fish(bash 中的 ~/.bash_profile)中。当我使用 Visual Studio Code 时,它知道在~/.config/fish/config.fish 中设置的环境变量,尽管它的父进程是/sbin/launchd,而不是鱼。这是怎么发生的?
【问题讨论】:
标签:
macos
visual-studio-code
environment-variables
【解决方案1】:
默认外壳
这个chsh -s /usr/local/bin/fish 命令将Fish Shell 设为您的默认login(1) shell(如Installing Fish shell on MacOS 自述文件中所述)。除非另有说明,否则 Fish 将用作所有内容的默认 shell。
它怎么知道$PATH
每次启动新的 Fish Shell 实例时,它都会查看 ~/.config/fish/config.fish 文件以进行配置和调整;在里面你可能设置了$PATH 变量,它将被输入到$PATH 变量中。
Visual Studio 代码
在 Linux 和 macOS 上使用的 shell 默认为 $SHELL,在 PowerShell 上
早期版本的 Windows 上的 Windows 10 和 cmd.exe。这些可以
通过在用户中设置 terminal.integrated.shell.* 手动覆盖
设置。参数可以使用
terminal.integrated.shellArgs.* 用户设置Read more about
configuring the shell
在 OSX 中,terminal.integrated.shell.osx 属性通过默认(null)或用户指定的 shell 调用 $SHELL
概述
登录(1) -->
设置$SHELL = /usr/local/bin/fish -->
Visual Studio Code 获取 $SHELL -->
启动一个新的 Fish Shell 实例 -->
鱼壳加载~/.config/fish/config.fish -->
设置$PATH 和其他配置