【问题标题】:In Ubuntu WSL, how can you store permanent environment variables?在 Ubuntu WSL 中,如何存储永久环境变量?
【发布时间】:2021-03-23 07:22:20
【问题描述】:

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

如何在 Ubuntu WSL2 上以永久方式存储我的环境变量?

【问题讨论】:

    标签: ubuntu environment-variables windows-subsystem-for-linux wsl-2


    【解决方案1】:

    所以这对我来说是有效的方式:

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

    export THISVAR=thisIsAVar
    export ANOTHERVAR=anotherVar
    

    【讨论】:

      【解决方案2】:

      有几种方法可以解决这个问题。

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

      2. 但我也建议您考虑试用fish shell,因为它具有设置“通用变量”的强大功能,它会自动传播到所有其他的 shell 实例,包括当前和在未来。

        例如set -Ux myvariable 42 将创建一个通用(和导出)变量,即使在您关闭并重新打开 shell 后,该变量仍将持续存在,而无需创建配置文件。

        Fish 还有许多其他很棒的功能,使其成为我的首选 shell(在 zsh 上使用了 15 年后)。

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

      【讨论】:

      • 我使用环境变量来存储机密,因此我不必在我的代码中包含纯文本机密。我发现环境变量直接附加到 shell 很奇怪,我认为它们与操作系统直接相关并且与 shell 无关。
      • 嗯,你是对的——环境变量一个操作系统结构,每个进程都有自己的环境,在进程启动时设置。但是由于 shell 通常负责启动子进程(尤其是在 WSL 中),因此通常是管理变量的地方。 可能(但不常见)将它们设置在内核的其他 Linux 环境(不是 WSL)中,然后我相信这会将它们传播到所有进程。
      • 将此标记为答案 OP
      【解决方案3】:

      .bashrc文件添加别名

      sudo nano ~/.bashrc
      

      在文件末尾添加这一行(在我的情况下,我想运行 laravel)

      alias laravel='~/.config/composer/vendor/laravel/installer/bin/laravel'
      

      然后重启wsl shell

      exit
      

      【讨论】:

      • 您能详细说明一下吗? OP 的问题是如何设置环境变量。这些与您的答案所涵盖的别名不同。
      猜你喜欢
      • 2011-08-15
      • 2015-03-23
      • 2021-12-07
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 2017-10-20
      相关资源
      最近更新 更多