/ /関数/変数をzshrcのローカルに保つにはどうすればいいですか? - zsh、zshrc

どのように関数/変数をzshrcのローカルに保つのですか? - zsh、zshrc

私が宣言した変数 zshrc 環境変数としてシェルで使用できます。私はこれが起こることを望んでいません。

私は変数を関数に入れてローカルとして設定しようとしましたが、関数は zshrc.

どうすればいいのですか? 私のzshrcで起こることは私のzshrcにとどまります

回答:

回答№1は16

それらは利用可能ですが、エクスポートされないので、コマンドラインから起動するスクリプトはこれらの変数を取得しません。もしあなたの .zshrc 見える

function zshrc()
{
local VAR=1
# Do stuff
}
zshrc

そして、あなたは決して発射したくない zshrc もう一度やり直すことができます

unfunction zshrc

その後。


答え№2の28

最近のバージョンのzshを使用しているなら、無名関数を使うことができます:

function () {
local xyz=abc
# whatever
}

関数は自動的に実行されてから投棄され、スコープ目的のためにのみ存在します。

これは 任意のソースファイル、zshrcだけでなく、


回答№3のための5

単語を追加しない場合 local 変数には、次のいずれかを行うまではそのまま残ります。

  1. 新しいターミナルウィンドウを開きます。
  2. 走る exec zsh または exec bash あなたのシェルに応じて。これは、単語が割り当てられていないローカル変数をクリアするだけです local.

これを避ける

method_name(){
a=11
echo $a
}

正しい例

method_name(){
local a=11
echo $a
}

この変数のスコープは、関数名 method_name 呼び出されたときに関数の内部でのみ利用可能になります(その後は使用されません)。

そのローカル変数に直接アクセスする場合は、このように設定することができます

local z=11

それをこのように呼ぶ

echo $z

あなたのシェルとニーズに応じて、 .bash_profile または .bashrc または .zshrc 関数やエイリアスを格納するために使用します。

環境変数とそれぞれのシェルの詳細については、このリファレンスを参照してください。

シェル拡張を使用してコマンドラインで環境変数を設定する方法を理解するためにこれも読んでください

あなたは環境変数をすばやく見ることができます。 env または printenv

大会は大文字を使用することです

一時的に環境変数を設定するには(端末を閉じるまで保存されます)

export A=11 または export B="11 is part of this string"

新しい端末ウィンドウを開いたと仮定します。.zshrcや.bashrcなどのソースを使用している場合は、端末セッションを閉じるまでこの環境変数を使用できるようになりました。注:設定時には$を使用しないでください。ただし、変数を参照するときは$を使用してください。

echo "A is equal to: $A and that is pretty nice"

echo "$A"

ファイルをソースする方法

source ~/path/to/file/filename

source ~/.bash_profile

環境変数を設定するには(環境変数を削除するか、再度設定するまで)

上記のコードを使用しますが、〜/ .bash_profileまたは〜/ .zshrcまたは他のそれぞれのファイルに配置してください。ファイルを保存してソースを取得します。

export B="11 is part of this string"

これであなたはそれを見ることができます

env

その環境変数を削除するには、その環境変数をファイルから削除し、再度ファイルをソースします。

一時的に環境変数を削除するには、unsetを使用します。

unset B

注意してください $ 設定を解除するとき

コマンドラインから環境変数を設定するには

export BLABLA="environment variable set from the command line, saved in file for later use"

あなたがそれを送っているファイルをチェックしてください、それは新しい行で始まらないかもしれませんし、別の関数、エイリアスまたは他の行であったあなたの最後の行に連結されているかもしれません。

これは完全に包括的な答えではありませんが、正しい方向への大きな一歩です。ターミナルシェルのスコープの設定、使用、削除の方法を示します。