エクスポートされた環境変数を削除するにはどうすればよいですか?


1559

gnuplotをインストールする前に、環境変数を設定しましたGNUPLOT_DRIVER_DIR = /home/gnuplot/build/src。インストール中に問題が発生しました。

GNUPLOT_DRIVER_DIR環境変数を削除したい。どうすればそれを達成できますか?


2
フィッシュシェルでこれを行う方法をお探しの方は、stackoverflow.com / questions / 30703860 /…(この質問は特定のシェルに関するものではありませんが)を参照してください
Elijah Lynn

回答:


2467

unset あなたが探しているコマンドです。

unset GNUPLOT_DRIVER_DIR

5
しかし、これはセッションでのみ機能します。それを確実に解除するのはどうですか?または、変数セットがどこにあるか検索して、移動して削除できますか?
eLRuLL 2014

31
これは端末インスタンスごとに機能するはずです。通常、ターミナルウィンドウが開かれるたびに、〜/ .bashrc、〜/ .profileなどのさまざまな場所から変数が読み込まれます。1つのターミナルインスタンスで設定した変数は、別のインスタンスに引き継がれません。ターミナルを開くたびに自動的に設定されるように見える変数がある場合は、ホームディレクトリのさまざまな隠しファイルを調べてみてください。または、それが設定されている場所を確認するには、「grep -r <X>〜」を試してください。<X>は変数の名前です。ホームディレクトリに多数のファイルがある場合は、しばらく時間がかかることがあります。
matt5784 2014年

1
これにより、変数もシェルから削除されます。これunexportを行う唯一の方法はありますT="$MYVAR"; unset MYVAR; MYVAR="$T"; unset Tか?
olejorgenb 16

1
@olejorgenb少なくともbashではdeclare +x MYVAR、エクスポートを削除して現在のシェルに値を保持するように言うことができます。
Peder Klingenberg

4
@PederKlingenberg export -n MYWARはBash でも機能します。
jarno

170

bashで環境変数を作成および削除するチュートリアル:

DUALCASE変数が存在するかどうかをテストします。

el@apollo:~$ env | grep DUALCASE
el@apollo:~$ 

そうではないので、変数を作成してエクスポートします。

el@apollo:~$ DUALCASE=1
el@apollo:~$ export DUALCASE

そこにあるかどうかを確認します。

el@apollo:~$ env | grep DUALCASE
DUALCASE=1

あります。だからそれを取り除く:

el@apollo:~$ unset DUALCASE

まだそこにあるかどうかを確認します。

el@apollo:~$ env | grep DUALCASE
el@apollo:~$ 

DUALCASEでエクスポートされた環境変数が削除されます。

ローカル変数と環境変数をクリアするのに役立つ追加のコマンド:

ログイン時にすべてのローカル変数をデフォルトに戻す:

el@apollo:~$ CAN="chuck norris"
el@apollo:~$ set | grep CAN
CAN='chuck norris'
el@apollo:~$ env | grep CAN
el@apollo:~$
el@apollo:~$ exec bash
el@apollo:~$ set | grep CAN
el@apollo:~$ env | grep CAN
el@apollo:~$

exec bash コマンドはすべてのローカル変数をクリアしましたが、環境変数はクリアしませんでした。

ログイン時にすべての環境変数をデフォルトに戻す:

el@apollo:~$ export DOGE="so wow"
el@apollo:~$ env | grep DOGE
DOGE=so wow
el@apollo:~$ env -i bash
el@apollo:~$ env | grep DOGE
el@apollo:~$

env -i bash コマンドは、ログイン時にすべての環境変数をデフォルトにクリアしました。


10
多分echo $VARIABLEより良いですenv | grep VARIABLE、それはそれがすべての変数を印刷して、そしてその出力を別の(grep)プロセスに送る必要がないのでより軽いです。さらに、env | VARIABLE同じパターンに一致する複数の変数をキャッチできます。Plus2は、echo $VARIABLE<Tab>を押すことで変数の名前を完成させることを可能にします(存在する場合、それはまた、あなたが何をしたいのかのヒントになるかもしれません)。
Rodrigo Gurgel

10
'env | 私はそれが本当になくなって伝えることができるので、grepのVARIABLEはエコー$ VARIABLE 『」よりも優れている』
calasyr

8
@RodrigoGurgelはecho $VARIABLE、VARIABLEがシェル変数(ここでは「ローカル変数」と呼ばれます)であるか、ウォークスルーの要点である環境変数であるかを通知しません。
hmijailが辞任者を悼む

4
env -i bash意図しない結果をもたらす可能性のあるサブシェル(少なくともMacでは)を作成しているようです。
Mark Chackerian 2017

2
echoを使用した@RodrigoGurgelは、空の文字列またはnullに設定された既存の変数を表示しません。ただし、変数をテストする適切な方法はですenv | grep -e '^VARNAME='
トーマス

5

元の質問では変数がどのように設定されたかについては触れられておらず、この特定の答えを探すためにこのページにたどり着いたため、以下を追加しています。

Cシェル(csh / tcsh)では、環境変数を設定する方法が2つあります。

  1. set x = "something"
  2. setenv x "something"

動作の違いは、setenvコマンドで設定された変数は自動的にサブシェルにエクスポートされますが、setで設定された変数は自動的にエクスポートされないことです。

setを使用して変数セットを設定解除するには、次を使用します。

unset x

setenvを使用して変数セットを設定解除するには、次を使用します。

unsetenv x

注:上記のすべてにおいて、変数名は「x」であると想定しています。

クレジット:

https://www.cyberciti.biz/faq/unix-linux-difference-between-set-and-setenv-c-shell-variable/ https://www.oreilly.com/library/view/solaristm-7- reference / 0130200484 / 0130200484_ch18lev1sec24.html


set / setenv wrtサブシェルの違いについての素晴らしい追加!
レベル

4

これも機能する可能性があります。

export GNUPLOT_DRIVER_DIR=

10
変数はまだ存在していますが、envコマンドの出力で確認できるように、空の文字列が含まれています。変数を使用するアプリケーションが、存在しない環境変数と空の環境変数を区別しない場合があります。
Palec 2017

1
はい、それは含まれます、これは単に変数を削除するのではなく、値を削除することでした。しかし、はい、使用できます-GNUPLOT_DRIVER_DIRの設定を解除します。
Nilesh K.

PAGER変数の場合、これは機能しません。でPAGER設定を解除しようとしましたexport PAGER=が、ページングが完全に無効になりました。すべてのmanページが端末に直接ダンプされました。 unset PAGERトリックを行い、デフォルトの動作に戻しました。
チャド

1

上記の回答で述べたように、変数の設定にunset GNUPLOT_DRIVER_DIR使用exportしたことがあれば動作するはずです。永続的に設定した場合、~/.bashrcまたは~/.zshrcそこから単に削除した場合は機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.