我已经尝试过,但每次重新启动系统时,我的变量都消失了。
如何在 Ubuntu WSL2 上永久存储环境变量?
所以这对我有用:
如果在 Ubuntu WSL2 上使用 Bash,则~/.bash_profile
是永久环境变量的正确文件,但是请确保在变量之前添加 export
关键字,如下所示:
export THISVAR=thisIsAVar
export ANOTHERVAR=anotherVar
要添加变量,请使用命令
sudo nano ~/.bash_profile
(如果您喜欢 Nano 编辑器)或 sudo vim ~/.bash_profile
(如果您喜欢 Vim)。将变量输入到 .bash_profile
后,保存文件,然后输入 source ~/.bash_profile
以使变量在终端中可用。
如果您希望某个变量在关闭 shell 会话后仍然存在,则需要将其永久设置为环境变量。您可以选择为当前用户或所有用户设置。
要为单个用户设置永久环境变量,请编辑 .bashrc 文件:
sudo nano ~/.bashrc
使用以下语法为您要添加的每个变量写一行:
导出[变量名称]=[变量值]
现在重新启动您的终端
这是它的完整链接: https://phoenixnap.com/kb/linux-set-environment-variable
有几种方法可以解决这个问题。
首先,通常的方法(正如您所发现的)是在 shell 启动脚本中设置环境变量。对于 bash,这将是
~/.bash_profile
,对于 zsh 来说,这将是 ~/.zprofile
,对于 Fish,这将是 ~/.config/fish/config.fish
。
但是我也建议您考虑尝试 fish shell,因为它有一个很棒的功能,可以设置“通用变量”,这些变量会自动传播到 shell 的所有其他实例,无论是存在的还是在未来。
例如
set -Ux myvariable 42
将创建一个通用(并导出)变量,即使在您关闭并重新打开 shell 后该变量也将持续存在,而无需创建配置文件。
Fish 还有许多其他出色的功能,使其成为我的首选 shell(在使用 zsh 15 年之后)。
也就是说,我不确定您使用 WSL 的目标是什么,但如果是“学习 Linux”,那么您可能最好从 bash 或 zsh 开始,因为它们是更“传统”的 shell,当然是 bash ,成为事实上的标准。
在
~/.profile
中设置环境对我有用。
如果
~/.bash_profile
或 ~/.bash_login
,则 bash(1) 不会读取此文件
存在。
适用于 WSL2 Ubuntu。
向
.bashrc
文件添加别名
sudo nano ~/.bashrc
将此行添加到文件末尾(在我的例子中,我想运行 laravel)
alias laravel='~/.config/composer/vendor/laravel/installer/bin/laravel'
然后重新启动 wsl shell
exit
我在 wsl 上使用
zsh
,因此更改 ~/.bashrc
文件不起作用。
从
~/.zshrc
导出 PATH 就成功了。
我在
~/.zshrc
文件的末尾添加了这一行
export PATH=$PATH:/path/to/bin
然后重新启动 wsl shell。