在Ubuntu WSL中,如何存储永久环境变量?

在Ubuntu WSL中,如何存储永久环境变量?,ubuntu,environment-variables,windows-subsystem-for-linux,wsl-2,Ubuntu,Environment Variables,Windows Subsystem For Linux,Wsl 2,我已经试过了,但是每次我重新启动我的系统,我的变量都消失了 如何在Ubuntu WSL2上永久存储环境变量?这就是我的工作方式: 如果在Ubuntu WSL2上使用bash,则~/.bash_profile是永久环境变量的正确文件,但是请确保在变量之前添加export关键字,如下所示: export THISVAR=thisIsAVar export ANOTHERVAR=anotherVar 有几种方法可以做到这一点 首先,正如您所发现的,通常的方法是在shell启动脚本中设置环境变量。对于

我已经试过了,但是每次我重新启动我的系统,我的变量都消失了


如何在Ubuntu WSL2上永久存储环境变量?

这就是我的工作方式:

如果在Ubuntu WSL2上使用bash,则~/.bash_profile是永久环境变量的正确文件,但是请确保在变量之前添加export关键字,如下所示:

export THISVAR=thisIsAVar
export ANOTHERVAR=anotherVar

有几种方法可以做到这一点

首先,正如您所发现的,通常的方法是在shell启动脚本中设置环境变量。对于bash,这将是~/.bash_profile,对于zsh,这将是~/.zprofile,对于fish,这将是~/.config/fish/config.fish

<> P>但是,我也建议您尝试一下它,因为它在设置通用变量的能力方面有很大的特点,它可以自动传播到当前和将来的shell的所有其他实例。 例如,set-Ux myvariable 42将创建一个通用的导出变量,即使在您关闭并重新打开shell之后,该变量仍将保持不变,而无需创建配置文件

在zsh上呆了15年后,Fish还有许多其他的优秀功能,使它成为了我的首选


也就是说,我不确定WSL的目标是什么,但如果是为了学习Linux,那么最好从bash或zsh开始,因为它们是更传统的shell,当然,bash是事实上的starndard。

我使用环境变量存储机密,这样我就不必在代码中包含纯文本机密。我觉得很奇怪,环境变量直接连接到shell,我认为它们更直接地与操作系统相关,与shell无关。你是对的,环境变量是一个操作系统构造,每个进程都有自己的环境,在进程启动时设置。但是,由于shell通常负责启动子流程,特别是在WSL中,因此通常在WSL中管理变量。在其他Linux环境中设置它们是可能的,但并不常见,而不是为内核设置WSL,我相信这会将它们传播到所有进程