変数
変数とは、ユーザごとに任意の値を入れられる箱のようなものです。
値
値とは、処理対象のデータです。
シェル変数
シェル変数は、シェルが管理する変数です。
シェル変数を作成したプロセスだけが参照可能です。(1368bashで作成したシェル変数は1984bashでは、参照不可)
シェル変数を作成したプロセスが終了した時点で、そのプロセス上のシェル変数は消滅します。
環境変数
環境変数は、全プロセスで参照できる変数です。
set
ユーザごとに設定されている変数を一覧で出力する。
$ set
env
ユーザごとの環境変数を一覧で出力する。
$ env
変数名=値
以下の書式をプロンプト上で実行することで、シェル変数が新規作成される。
$ 変数名=値
(例)
$ TEST=1
また、既に存在する変数名であれば、値を更新する。
$ TEST=1
$ TEST=2 #TEST変数の値を1から2に更新
export (オプション) (引数)
環境変数を新規作成したり、シェル変数と環境変数を変換する。
主なオプションは以下。
オプション名 | 機能 |
---|---|
-n | 環境変数をシェル変数に変換する |
$ export TEST=1 #環境変数を新規作成
$ export TEST #シェル変数を環境変数に変換
$ export -n TEST #環境変数をシェル変数に変換
unset (引数)
引数変数を削除する。
$ unset TEST
$変数名
以下の書式をプロンプト上で入力することで、変数名を変数と認識される。
$変数名
echo (引数)
引数の値や文字列を標準出力する。
上記の変数の値の確認などで使用される。
$ echo TEST
TEST
$ echo $TEST #TEST変数と認識される
1
文字列の連結
文字列の連結は、以下のような書式で、値を連続で記述します。
値値
$ TEST=1
$ echo TEST$TEST
TEST1
上記の例1の場合、「TEST$TEST」を出力しています。
「TEST」は通常の文字列で、「$TEST」は$がついているため変数とみなされます。
よって、最初の「TEST」はそのまま、後の「$TEST」は代入されている「1」が表示されます。
$ TEST=1
$ echo $TEST'TEST'
1TEST
上記の例2の場合、「$TEST」は変数として、「'TEST'」は文字列としてみなされて連結出力しています。
後ろの「TEST」をクォーテーションで囲まないと、「$TESTTEST」という1つの変数としてみなされてしまうため、必要となります。
PATH
PATHとは、ディレクトリパスが格納されている環境変数です。
実行対象のファイルパスをOSが自動補完してくれます。
そのため、ユーザはファイルパスを省略して実行することができます。
なんの事かと言うと、これまで使用してきたコマンドというものはファイルが実行されていたのです。
例えば、「pwd」や「cd」というコマンドは「pwdファイル」や「cdファイル」を実行しているということです。
では、そのようなファイルはどこに存在するのでしょうか。
「PATH」という環境変数を探してみます。
$ env | grep PATH
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ユーザ名/.local/bin:/home/ユーザ名/bin
(出力結果はユーザによって異なります。)
主に「/usr/bin」配下にあることがわかります。
ここで、Linuxの主なディレクトリとその使用用途を挙げます。
ディレクトリ名 | 使用用途 |
---|---|
bin | 基本コマンド |
boot | OS起動 |
dev | デバイス関連 |
etc | 各種設定 |
home | ホームディレクトリ |
lib | 共通ライブラリ |
mnt | マウントポイント |
opt | 追加ソフトウェア |
proc | プロセス情報 |
root | rootユーザのホームディレクトリ |
sbin | システム関連コマンド |
tmp | 一時的なファイル |
usr | 各種プログラム |
var | よく更新されるファイル |
また、whichコマンドで、コマンドのパスを確認することができます。
which (引数)
引数のコマンドを絶対パスで表示する。
存在しないコマンドを引数に指定した場合、以下のようなエラーメッセージが出力される。
no 入力コマンド名 in (PATH環境変数の値)
$ which コマンド名
ファイル名だけで実行する方法
ファイル名だけで実行する方法は主に以下の2つです。
- PATH環境変数があるディレクトリ配下にファイルを配置する
- 既存のPATH環境変数の値と、ファイル格納されているディレクトリを文字列連結し、PATH環境変数を更新する
1は、シンプルにPATH環境変数があるディレクトリ配下にファイルを配置します。
2は、以下のように記述することで値を連結します。
PATH=$PATH:ファイルパス
alias (引数)
エイリアスを作成、更新、確認する。
引数を省略すると、登録されている全てのエイリアスが表示される。
以下のように引数を指定すると、エイリアスが新規作成される。
alias エイリアス名='コマンド名'
$ alias psa='ps -ef'
また、以下のように引数を指定すると、該当するエイリアス名・登録された値が出力される。
$ alias エイリアス名
$ alias psa
unalias (引数)
引数エイリアスを削除する。
$ unalias エイリアス名
変数やエイリアスの設定ファイル
変数やエイリアスは基本的に永続化ができません。
これは、シェルのプロセスが変数やエイリアスを保持しているので、プロセス終了と同時に消滅してしまう為です。
そこで、変数やエイリアスを永続化するためには、ログインユーザが読み込む設定ファイルに変数やエイリアスを記述する必要があります。
ログインユーザが読み込む設定ファイルには、以下があります。
設定ファイル | 説明 |
---|---|
/etc/profile | 全ユーザで設定。 |
/etc/profile.d/*.sh | 全ユーザで設定。profile配下のファイル群。 |
~/.bash_profile | ユーザごとで設定。主に環境変数・ログイン時動作を設定。 |
~/.bashrc | ユーザごとで設定。主にエイリアスを設定。 |