Unix-environment

提供:Dev Guides
移動先:案内検索

Unix/Linux-環境

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

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

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

$TEST="Unix Programming"
$echo $TEST

次の結果が生成されます。

Unix Programming

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

システムにログインすると、シェルは環境をセットアップするために*初期化*と呼ばれるフェーズを経ます。 これは通常、次のファイルを読み取るシェルを含む2段階のプロセスです-

  • /etc/profile * プロフィール

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

  • シェルは、ファイル /etc/profile が存在するかどうかを確認します。
  • 存在する場合、シェルはそれを読み取ります。 それ以外の場合、このファイルはスキップされます。 エラーメッセージは表示されません。
  • シェルは、*。profile *ファイルがホームディレクトリに存在するかどうかを確認します。 ホームディレクトリは、ログイン後に開始するディレクトリです。
  • 存在する場合、シェルはそれを読み取ります。それ以外の場合、シェルはそれをスキップします。 エラーメッセージは表示されません。

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

$

これは、コマンドを実行して実行させるためのプロンプトです。

注意-ここで詳述するシェル初期化プロセスはすべての 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/finddevguides/unix]$
[root@ip-72-167-112-17/var/www/finddevguides/unix]$

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

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

Sr.No. Escape Sequence & Description
1

\t

HH:MM:SSとして表される現在の時刻

2

\d

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

3

\n

改行

4

\s

現在のシェル環境

5

\W

作業ディレクトリ

6

\w

作業ディレクトリの完全パス

7

\u

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

8

\h

現在のマシンのホスト名

9

\#

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

10

\$

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

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

不完全なコマンドを発行すると、シェルは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
$

環境変数

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

Sr.No. Variable & Description
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システムには、他のディレクトリを検索する前に、execの後にプロセスイメージを構築するときに共有オブジェクトを検索する必要があるディレクトリのコロン区切りのリストが含まれています。

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
$