Unix / Linux-環境

この章では、Unix環境について詳しく説明します。重要なUnixの概念はenvironment、環境変数によって定義されます。システムによって設定されるものもあれば、ユーザーによって設定されるものもあれば、シェルまたは別のプログラムをロードするプログラムによって設定されるものもあります。

変数は、値を割り当てる文字列です。割り当てられる値は、数値、テキスト、ファイル名、デバイス、またはその他のタイプのデータです。

たとえば、最初に変数TESTを設定し、次に変数TESTを使用してその値にアクセスします。 echo コマンド-

$TEST="Unix Programming"
$echo $TEST

次のような結果になります。

Unix Programming

環境変数は、を使用せずに設定されることに注意してください $署名しますが、それらにアクセスするときは、接頭辞として$記号を使用します。これらの変数は、シェルから出るまでその値を保持します。

システムにログインすると、シェルは次のフェーズを経ます。 initialization環境を設定します。これは通常、シェルが次のファイルを読み取ることを含む2段階のプロセスです-

  • /etc/profile
  • profile

プロセスは次のとおりです-

  • シェルはファイルが /etc/profile 存在します。

  • 存在する場合、シェルはそれを読み取ります。それ以外の場合、このファイルはスキップされます。エラーメッセージは表示されません。

  • シェルはファイルが .profileホームディレクトリに存在します。ホームディレクトリは、ログイン後に開始するディレクトリです。

  • 存在する場合、シェルはそれを読み取ります。それ以外の場合、シェルはそれをスキップします。エラーメッセージは表示されません。

これらのファイルの両方が読み取られるとすぐに、シェルはプロンプトを表示します-

$

これは、コマンドを実行するためにコマンドを入力できるプロンプトです。

Note −ここで説明するシェル初期化プロセスはすべてに適用されます Bourne シェルを入力しますが、いくつかの追加ファイルはによって使用されます bash そして ksh

.profileファイル

ファイル /etc/profile Unixマシンのシステム管理者によって維持され、システム上のすべてのユーザーが必要とするシェル初期化情報が含まれています。

ファイル .profileあなたの管理下にあります。このファイルには、シェルのカスタマイズ情報をいくつでも追加できます。構成する必要のある情報の最小セットには、次のものが含まれます。

  • 使用している端末の種類。
  • コマンドを配置するディレクトリのリスト。
  • 端末のルックアンドフィールに影響を与える変数のリスト。

あなたはあなたをチェックすることができます .profileホームディレクトリで利用できます。viエディターを使用して開き、環境に設定されているすべての変数を確認します。

ターミナルタイプの設定

通常、使用している端末のタイプは、次のいずれかによって自動的に構成されます。 login または gettyプログラム。時々、自動設定プロセスはあなたの端末を間違って推測します。

端末が正しく設定されていない場合、コマンドの出力がおかしくなったり、シェルと正しく対話できなかったりする可能性があります。

これが当てはまらないことを確認するために、ほとんどのユーザーは次の方法で端末を最小公分母に設定します。

$TERM=vt100
$

パスの設定

コマンドプロンプトでコマンドを入力すると、シェルはコマンドを実行する前にそのコマンドを見つける必要があります。

PATH変数は、シェルがコマンドを検索する場所を指定します。通常、Path変数は次のように設定されます-

$PATH=/bin:/usr/bin
$

ここでは、コロン文字で区切られた個々のエントリのそれぞれ (:)ディレクトリです。シェルにコマンドの実行を要求し、PATH変数で指定されたディレクトリのいずれにもコマンドが見つからない場合、次のようなメッセージが表示されます。

$hello
hello: not found
$

次のセクションで説明するPS1やPS2のような変数があります。

PS1およびPS2変数

シェルがコマンドプロンプトとして表示する文字は、変数PS1に格納されます。この変数は、好きなように変更できます。変更するとすぐに、その時点からシェルによって使用されます。

たとえば、コマンド-を発行した場合

$PS1='=>'
=>
=>
=>

プロンプトは=>になります。の値を設定するにはPS1 作業ディレクトリが表示されるように、コマンド-を発行します。

=>PS1="[\u@\h \w]\$"
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$

このコマンドの結果、プロンプトにユーザーのユーザー名、マシンの名前(ホスト名)、および作業ディレクトリが表示されます。

かなりの数があります escape sequencesPS1の値引数として使用できます。プロンプトが情報であなたを圧倒しないように、あなた自身を最も重要なものに制限するようにしてください。

シニア番号 エスケープシーケンスと説明
1

\t

現在の時刻。HH:MM:SSで表されます

2

\d

現在の日付。平日月の日付として表されます

3

\n

改行

4

\s

現在のシェル環境

5

\W

作業ディレクトリ

6

\w

作業ディレクトリのフルパス

7

\u

現在のユーザーのユーザー名

8

\h

現在のマシンのホスト名

9

\#

現在のコマンドのコマンド番号。新しいコマンドが入力されると増加します

10

\$

有効なUIDが0の場合(つまり、rootとしてログインしている場合)、プロンプトを#文字で終了します。それ以外の場合は、$記号を使用します

ログインするたびに自分で変更を加えることも、PS1に追加して自動的に変更を加えることもできます。 .profile ファイル。

不完全なコマンドを発行すると、シェルは2次プロンプトを表示し、コマンドが完了してヒットするのを待ちます Enter 再び。

デフォルトのセカンダリプロンプトは > (大なり記号)、ただし、を再定義することで変更できます PS2 シェル変数-

以下は、デフォルトのセカンダリプロンプトを使用する例です-

$ echo "this is a
> test"
this is a
test
$

以下の例は、カスタマイズされたプロンプトでPS2を再定義します-

$ PS2="secondary prompt->"
$ echo "this is a
secondary prompt->test"
this is a
test
$

環境変数

以下は、重要な環境変数の部分的なリストです。これらの変数は、以下のように設定およびアクセスされます-

シニア番号 変数と説明
1

DISPLAY

ディスプレイの識別子が含まれています X11 プログラムはデフォルトで使用する必要があります。

2

HOME

現在のユーザーのホームディレクトリを示します:CDのデフォルト引数 built-in コマンド。

3

IFS

を示します Internal Field Separator これは、展開後の単語分割のためにパーサーによって使用されます。

4

LANG

LANGはデフォルトのシステムロケールに展開されます。LC_ALLを使用して、これをオーバーライドできます。たとえば、その値がpt_BRの場合、言語は(ブラジル)ポルトガル語に設定され、ロケールはブラジルに設定されます。

5

LD_LIBRARY_PATH

ダイナミックリンカを備えたUnixシステムには、他のディレクトリを検索する前に、実行後にプロセスイメージを構築するときにダイナミックリンカが共有オブジェクトを検索する必要があるディレクトリのコロン区切りリストが含まれています。

6

PATH

コマンドの検索パスを示します。これは、シェルがコマンドを検索するディレクトリのコロンで区切られたリストです。

7

PWD

cdコマンドで設定された現在の作業ディレクトリを示します。

8

RANDOM

参照されるたびに、0〜32,767のランダムな整数を生成します。

9

SHLVL

bashのインスタンスが開始されるたびに1ずつ増加します。この変数は、組み込みのexitコマンドが現在のセッションを終了するかどうかを判別するのに役立ちます。

10

TERM

表示タイプを指します。

11

TZ

タイムゾーンを指します。GMT、ASTなどの値を取ることができます。

12

UID

シェルの起動時に初期化された、現在のユーザーの数値ユーザーIDに展開されます。

以下は、いくつかの環境変数を示すサンプル例です。

$ echo $HOME
/root
]$ echo $DISPLAY

$ echo $TERM
xterm
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
$