zshでenv変数を設定できません

zshでenv変数を設定できません

私はCarly Linuxを使用しています:

lsb_release -a

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

環境変数を設定しました。

export DB_USER=something

動作しますが、タブを閉じると認識されなくなります。私はDjangoプロジェクトの環境変数を設定しています。 「pycharm」端末に設定すると設定されます。

   printenv  DB_USER

しかし、pyhcarmを閉じてもprintenv DB_USER値は表示されません。

タブの1つを使用して端末に設定しました。繰り返しますが、設定しましたが、特定の端末を閉じると、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ターミナルであれ、ターミナルであれ、各ターミナルは異なるシェルセッションとは異なる環境です。一方で設定した内容は他方には存在しません。

複数のセッションで動作するようにファイルを編集するか/etc/zsh/zprofile。ログインすると、使用しているシェルであるこの情報を取得できます。実行している作業に応じて、後者のinitスクリプトを使用してすべてのシェル初期化のソースとして機能できるようにする方が良いかもしれません。etc/zsh/profile/etc/zsh/zshenvexport DB_USER=somethingzsh

答え2

環境変数をそのまま設定すると、特定のセッションに対してのみ設定されます。すべてのターミナルセッションで設定するには、ホームディレクトリの.zshrcに次の行を追加する必要があります(または/rootrootアカウントで使用する場合)。

export DB_USER=something

質問の2番目の部分では、パス変数はすべてのセッションで共通ですが、コマンドの実行時に表示される環境変数のリストは、env端末セッションの開始時にすべて初期化されます。現在の作業ディレクトリセッションまたは変数。推測できるように、これらの変数はすべてのインスタンスに共通のパス変数とは異なり、インスタンスごとに異なるため、個々のセッションに対して定義されます。$USER$PWD

関連情報