我无法在 zsh 上设置 env 变量

我无法在 zsh 上设置 env 变量

我使用的是Kali Linux:

lsb_release -a

"
Distributor ID: Kali
Description:    Kali GNU/Linux Rolling
Release:        2021.2
Codename:       kali-rolling
"

我设置了环境变量

export DB_USER=something

它可以工作,但是当我关闭选项卡时,它不再识别。我正在为我的 Django 项目设置 env 变量。当我在“pycharm”终端上设置时,它会设置它。

   printenv  DB_USER

但是当我关闭pyhcarm时,printenv DB_USER没有显示任何值。

我使用其中一个选项卡在终端上设置它。同样,它设置了它,但是当我关闭该特定终端时,它不再识别该 env 值。

当我检查 zshenv 文件时:

 nano /etc/zsh/zshenv

我这个文件里有这个

if [[ -z "$PATH" || "$PATH" == "/bin:/usr/bin" ]]
then
        export PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
fi

唯一的环境变量 zsh 有 PATH。但是当我运行env命令时,我看到一个很大的环境变量列表,但它们不在“zshenv”中。

答案1

每个终端,无论是系统终端、Pycharm 终端还是其他终端,都是不同的 shell 会话和不同的环境。你在其中一个中设置的内容不会在另一个中存在。

如果您希望它可以跨会话使用,那么您需要编辑文件/etc/zsh/zprofileetc/zsh/profile/etc/zsh/zshenv添加export DB_USER=something。这将在登录时获取它,zsh这是您正在使用的 shell。根据您正在执行的操作,最好使用后一个 init 脚本,以便它可以作为任何 shell init 的来源。

答案2

当您按照现有方式设置环境变量时,您只是为特定会话设置它。要在所有终端会话中设置它们,在您的情况下,您应该将以下行附加到位于您的主目录中的 .zshrc 中(或者/root如果您希望将其用于 root 帐户):

export DB_USER=something

对于问题的第二部分,路径变量在所有会话中都是通用的,但是您在运行命令时看到的环境变量列表env都是在终端会话开始时初始化的,例如,$USER引用用户运行的变量$PWD引用当前工作目录的会话或变量。正如您可以推断的,这些变量是特定于每个实例的,因此是为各个会话定义的,这与所有实例通用的路径变量不同。

相关内容