Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> シェル環境変数の設定チュートリアル

シェル環境変数の設定チュートリアル

  
環境変数は最後の章を覚えています。システムにログインすると、最初にシェルを取得します。そして、それはまた旅行(プロセス)を取り、そして次のように入力します。コマンドはこのシェルのサブルーチン(子プロセス)に属します。あなたが十分注意しているのであれば、私たちのシェルがアカウント設定の最後の列である/etc /passwdファイルに設定されていることを見つけるのは難しくありませんデフォルトは/bin /bashです。
実際、シェルを取得すると、コマンドの入力、プログラムの実行など、実際にシステムと通信することができます。シェルを取得した後で別のシェルに入る(つまり、サブルーチンを開始する)こともできます。それから、exitを入力するまで、より深いシェルに(そしてサブルーチンのサブルーチンに)進むことができます。前のシェル(前のレベルの親プログラムを返す)前の章で述べたサブルーチンの概念を読んだことがあれば、理解しやすいでしょう。ただし、動作は無制限ではなく、多くの設定を事前に定義する必要があります。そのため、シェルを取得すると、いくつかの環境設定、つまり「環境変数」も取得されます。いわゆる変数(変数)は、特定の設定値を特定の名前(またはラベル)で保存して、将来の使用に使用することです。たとえば、surname = chen; name = kennyの場合、< last name> name’は変数名であり、chenとkennyは変数が保持する値です。シェルによって定義および管理される変数は、シェルによって生成されたすべてのサブルーチンで使用できるため、環境変数と呼ばれます。たとえば、一般的に使用されている環境変数は、次のとおりです(つまり、環境変数は、シェルによって生成されたすべての子プロセスによって使用される変数です)変数名は、HISTCMDの現在のコマンドを表します。レコード番号HISTFILEコマンドはテーブルの格納ファイルを記録します。 HISTSIZEコマンドはテーブルボリュームを記録します。 HOMEのデフォルトはホームディレクトリです。 IFSプリセット区切り文字LINENOシェルスクリプトの現在の行数。 MAILメールボックスへのパス。 MAILCHECKがメッセージを確認する秒数。 OLDPWDが最後に入力されたディレクトリパス。 OSTYPE オペレーティングシステム
タイプ。 PATHのデフォルトのコマンド検索パス。 PPID親プログラムのPID。 PWDの現在の作業ディレクトリパス。 SECONDSの現在のシェルの連続起動時間。現在のシェル実行パスをSHELLします。 TMOUTが自動的にログオフする最大アイドル時間。 UIDユーザーのUID。 $現在のシェルのPID。 ?最後のコマンドの戻り状況これらの変数の値を確認するには、変数名の前に" $'"記号を付けてechoコマンドを使用して表示します。#echo $ PWD /root#echo $$ 1206#echo $ 0最初のコマンドは現在のディレクトリのパスを表示しますが、これはpwdコマンドを実行した結果と同じであり、2番目のコマンドは現在のシェルのPID(1206)を表示します。この時点でkill -9 1206と入力した場合、現在のシェルは切断され、別のシェルを取得するには再度ログインする必要があり、そのPIDも新しいので、3行目のコマンドは前のコマンドの戻りステータスです。 :コマンドが正常に実行されてエラーがない場合は通常0、コマンドにエラーが発生した場合は戻りステータスは0以外で、その値はプログラマによって異なります(後でシェルスクリプトで紹介します)。最後のコマンドについて、次の結果を比較します。#ls mbox mbox#echo $?0#ls no_mbox ls:no_mbox:そのようなファイルまたはディレクトリはありません#echo $?1最初のコマンドは正常に実行されたので、戻ります。状態は0、2番目のコマンドは実行に失敗し、戻り状態は1です。プログラマーが異なるエラーに対して異なる戻り状況レベルを設定した場合は、戻り値からどのようなエラーが問題の原因となっているかを導き出すことができます。ヒント:将来プログラムやスクリプトを作成する場合は、習慣を身に付けて各コマンドの結果に戻り状況を設定する必要があります。これはデバッグ時に特に重要です。後でスクリプトを学ぶときに、これについて話しましょう。新しい変数を定義したり、既存の変数を変更するには、常に=(等号)を使用できます。次に例を示します。#MYNAME = kenny#echo $ MYNAME kenny定義済みの変数を取り消したい場合は、unsetコマンドを使用できます。#unset MYNAMEただし、環境変数の特性の1つは一方向の出力です。つまり、シェル固有の変数はこのシェルでのみ使用できます。同じシェル内で他のプログラム、スクリプト、コマンド、またはそれらのサブルーチンと共有したい場合は、exportコマンドを使用してこの変数を出力する必要があります。しかし、とにかく、サブルーチン内で変数を定義した場合、この変数の値はサブルーチン自体とそのサブルーチンにのみ影響し、親や親によって生成された他の子にはイメージ化されません。プログラム(これが、PATHパスを変更するために通常exportコマンドを使用する理由です。たとえば、プログラムで新しい変数を定義したり、既存の変数の値を変更したりします。プログラムの終わりに設定されます。変数はすべて取り消されます;プログラムによって生成されたサブルーチンと変数の値を共有したい場合は、サブルーチンが再定義しない限り、exportコマンドを使用して変数の値を保持する必要があります。しかし、いずれにせよ、現在のプログラムによって定義されている変数の値を親プログラムに渡すことはできません。次の実験をしてみましょう。#MYNAME = kenny#echo $ MYNAME kenny#export MYNAME#変数を設定します。 ##現在の設定値#変数値を出力するにはexportを使用します。 #/bin /bash#サブルーチンに入るための別のシェルを開きます。 #echo $ MYNAME kenny##元の設定を保持します。 #export MYNAME = netman#echo $ MYNAME netman#設定値を再定義し、エクスポート出力も使用します。 ##変数値は新しい値に置き換えられます。 #exit#サブルーチンを終了して親プログラムに戻ります。 #echo $ MYNAME kenny##親プログラムの変数値は変更されていません。変数に関するもう1つの機能は、変数値が継承されることです。つまり、変数値を設定して別の変数名を設定できます。たとえば、#FIRST_NAME =" Kenny"#MYNAME = $ FIRST_NAME#echo $ MYNAME Kenny#変数を定義します。 #別の変数を定義しますが、その値が最初の変数です。 ##2番目の変数は最初の変数の値を継承します。また、あなたはまた、いくつかのルールに注意を払うの変数の定義:

·あなたは変数を定義すると、' ='スペースバーの両側に無い数字;
·変数の名前として、のみ数字ではなく文字と数字;名前が長すぎる場合は、名前で区切ることができます。

定義済みの変数は大文字で、カスタム変数は大文字と小文字を区別して区別することができます。 Br>·シェル自体で定義された変数のみが環境変数と呼ばれます。
·変数に特殊文字がある場合は、変数がバンド内にある場合は最初に" \\'記号を使用する必要があります。空白があります、あなたは引用符を使わなければなりません、あるいはあなたは飛び降りることができます。
最後の2つについて、経験する例をいくつか紹介します。#TOPIC = 'Q& A'#特別な記号と空白を一重引用符で囲みます#Q1 = What \\ s \\ your \\ \\&topic; topic \\ " \\?#echo $ Q1あなたの"トピック"とは?#特殊記号(引用符付き)と空白文字を飛び越えるには#を使います。##飛び出した後、特殊記号と空白文字は保存されます。 #ANS =" Itis $ TOPIC" ------この場所には注意が必要です。二重引用符で囲まれた文字列は変数を参照できます。 #echo $ ANS ------この使い方はより一般的であり、次の一重引用符は一般的ではありません。 Q& Aです。#変数値を保持するには二重引用符を使用します。(#)変数値を表示するには二重引用符を使用します。 #WRONG_ANS = '$ TOPICです。' -----シングルとダブルの引用符の妥当な使用に注意してください。#echo $ WRONG_ANSこれは、$ TOPICです。 Line)##一重引用符を使用します。すべて予約されていますが、同時に#$も変数値ではなく一般記号として予約されています。 ------ $ quotationが一般的なシンボルとして予約されている場合、この場所に注意が向けられます。 #ALT_ANS = 'the $ TOPIC' \\は\\" '$ TOPIC'" \\です。------一重引用符と二重引用符を混在させると理解しやすくなります。 #echo $ ALT_ANS $ TOPICは 'Q& A'です。#一重引用符、二重引用符、およびエスケープ文字の混在\\##単引用符+すべて;二重引用符は変数の値を保持します。 。ここで最後の例を説明しましょう: '$ TOPICは'" $ TOPIC" \\です。最初にテキスト「the $ TOPIC is」を3つのスペースと$記号を使用して一重引用符で囲み、次に$ TOPIC変数の値を保持するために二重引用符を使用し、最後に\\を使用して小数点をエスケープします。 「&」と「」の記号を参照する場合、基本的に、「」で囲まれた内容は1つの文字列になり、特殊文字は特殊機能を失い一般文字になりますが、 '記号を使用することはできなくなりますが、' ''の途中には ''厳密な記号は存在せず、$などの特殊文字も特殊な機能を保持しています。エコー「$ HOME」とエコー「$ HOME」の違いを見てもいいでしょう。ヒント:シェルコマンドラインのエスケープ文字' \\'実際、よく使用されます。例えば、コマンドの1つが長すぎる場合、複数行を入力している場合、またはコマンド行をきれいに入力したい場合は、Enterキーを押して次の行を入力し、入力を続けることができます。ただし、Enterキーを押すと、実際にはCR(Carriage-Return)文字が入力され、シェルがCR文字を読み取ると、コマンドが実行されます。この時点で、Enterを入力する前に\\記号を入力すると、CR文字から飛び出すことができるので、シェルはコマンドをすぐには実行しません。 この種のコマンドラインは、スクリプトでよく見られますが、その意味を理解しておく必要があります。
Copyright © Windowsの知識 All Rights Reserved