Unix/Linux 環境

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

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

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

$TEST="Unix Programming"
$echo $TEST

次の結果を生成します。

Unix Programming

環境変数を設定する場合には、$記号は使用されませんが、環境変数にアクセス場合、接頭辞として$記号を使用することに注意してください。 これらの変数は、Shell(シェル)を離れるまでその値を保持します。

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

-/etc/profile

個人情報

プロセスは以下のようです。

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

これらの2つのファイルが読み取られると、shell(シェル)はプロンプトを表示します-

$

これはプロンプトであり、コマンドを入力して実行できます。

ヒント–ここで詳しく説明するshell(シェル)初期化プロセスは、すべてのBourne型のshell(シェル)に適用されますが、bashとkshはその他のファイルを使用します。

.profileファイル

ファイル/etc/profileは、Unixコンピュータのシステム管理者によって管理されており、システム上のすべてのユーザーが必要とするShell(シェル)初期化情報が含まれています。

ファイル.profileにShell(シェル)カスタマイズ情報を追加できます。構成する必要のある情報の最小セットには、次のものが含まれます。

  • 使用している端末の種類です。
  • コマンドを見つけるディレクトリのリストです。
  • 端末の外観に影響を与える変数のリストです。

ホームディレクトリで利用可能な.profilesを表示できます。 viエディターで開き、環境に設定されているすべての変数を確認します。

端末タイプを設定する

通常、使用する端末タイプは、ログインプログラムまたはgettyプログラムによって自動的に構成されます。 自動構成プロセスが端末を誤って推測する場合があります。

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

この場合を避けるために、ほとんどのユーザーは、次の方法で端末を最小公分母に設定します。

$TERM=vt100
$

パスを設定する

コマンドプロンプトでコマンドを入力する場合、Shell(シェル)プログラムは、実行する前にコマンドを見つける必要があります。

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

$PATH=/bin:/usr/bin
$

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

$hello
hello: not found
$

PS1やPS2などの変数については、次の章で説明します。

PS1およびPS2変数

Shell(シェル)はコマンドプロンプトで表示される文字として、変数PS1に格納されます。 この変数は任意の値に変更できます。 変更した後、Shell(シェル)はすぐにそれを使用します。

例えば、次のコマンドを発行した場合-

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

プロンプトが「=>」に変わります。 PS1の値を設定して作業ディレクトリを表示するには、次のコマンドを発行します-

=>PS1="[\[email protected]\h \w]$"
[[email protected] /var/www/gingerdoc/unix]

$
[[email protected] /var/www/gingerdoc/unix]

$ 

このコマンドの結果は、ユーザーのユーザー名、端末名(ホスト名)、および作業ディレクトリを表示するためのプロンプトです。

多いのエスケープシーケンスはPS1の値パラメータとして使用できます。 自分を重要な位置に制限するようにしてください。

シーケンス番号エスケープシーケンスと説明
1\t
現在の時刻です。HH:MM:SSで表されます。
2\d
現在の日付です。平日の月の日付として表されます。
3\n
新規チームです。
4\s
現在のシェル環境です。
5\W
作業ディレクトリです。
6\w
作業ディレクトリのフルパスです。
7\u
現在のユーザー名です。
8\h
現在のマシンのホスト名です。
9\#
現在のコマンドのコマンド番号です。 新しいコマンドを入力すると、増加します。
10$
有効なUIDが0の場合(rootユーザーとしてログインしている場合)、プロンプトは#文字で終わりです。それ以外の場合は、0で終わりです。 それ以外の場合は、$記号を使用します。

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

不完全なコマンドを発行すると、shell(シェル)は補助プロンプトを表示し、コマンドが完了するのを待ってから、もう一度Enterキーを押します。

デフォルトで補助プロンプトは「>」記号であるが、PS2 shell(シェル)変数を再定義することで変更できます-

以下は、デフォルトの補助プロンプトの使用例です。

$ 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**プログラムがデフォルトで使用する必要がある表示された識別子が含まれています。
2HOME
現在のユーザーのホームディレクトリを示します。cd組み込みコマンドのデフォルトパラメータです。
3IFS
展開した後、単語分割に内部フィールドセパレーターを使用するようにパーサーに指示します。
4LANG
LANGはデフォルトのシステムロケールに拡張されています。LC_ALLを使用してこの設定を置き換えることができます。例えば、値がpt_BRの場合、言語を(ブラジル)ポルトガル語に設定し、ロケールをブラジルに設定します。
5LD_LIBRARY_PATH
ダイナミックリンカを備えたUnixシステムには、コロンで区切られたディレクトリのリストが含まれています。実行した(exec)後、プロセスイメージを構築する前に、ダイナミックリンカは他のディレクトリを検索する前に共有オブジェクトを検索する必要があります。
6PATH
コマンドの検索パスを示します。 これは、shell(シェル)がコマンドを検索するディレクトリのコロンで区切られたリストです。
7PWD
cdコマンドで設定された現在の作業ディレクトリを示します。
8RANDOM
各参照は、0から32,767までのランダムな整数を生成します。
9SHLVL
bashインスタンスが開始されるたびに1ずつ増加します。 この変数は、組み込みのexitコマンドが現在のセッションを終了するかどうかを判別するのに役立ちます。
10TERM
表示の型を指します。
11TZ
タイムゾーンを指します。 GMT、ASTなどを使用できます。
12UID
現在のユーザーのデジタルユーザーIDに展開されます。shell(シェル)は開始する時に初期化されます。

以下は、少数の環境変数を示す実例です。

$ echo $HOME
/root
]$ echo $DISPLAY

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です