シェル回りのコマンドライン系の基本的な操作について。
シェル
Linux上ではコマンドを入力するとコマンドに応じた処理が実行されます。
実際の処理の実行はLinuxカーネルが担っていますが、ユーザから入力されたコマンドは直接カーネルに届かず、シェルを経由してコマンドが届くことになります。
多くのディストリビューションに使用されるシェルはbashです。
そのマシンにおいて、使用できるシェルは以下に記述されます。
/etc/shells
・設定例
[wantan@localhost ~]$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /usr/bin/tmux
tmuxもシェル扱いされるのか??
とりあえず試験的には間違いなくtmuxはシェルではなく、「端末多重化ソフトウェア」として認識しておいた方がよいと思います。
「sh」と打つとシェルを切り替えてshでコマンドなどが実行できることになります。
[wantan@localhost ~]$ sh sh-4.2$ ls -l 合計 0 -rw-r--r--. 2 root root 0 7月 7 00:02 hardttt.txt drwxrwxr-x. 2 wantan wantan 177 7月 17 22:57 rpm -rw-r--r--. 2 root root 0 7月 7 00:02 test.txt lrwxrwxrwx. 1 root root 8 7月 7 00:02 ttt.txt -> test.txt sh-4.2$
その他Cシェル系のtcshやKornシェル系のzshなどが有名ですが、試験的にはどの程度重要になるか不明。
bashシェルの基本操作
入力補完
[tab]キーで入力補完が行える。
Linuxを操作するようになってまず初めに覚えること。
コマンド、ファイルなど無駄な入力間違いをしないためにも使うべき。
プロンプト表示
bashで以下のように一般ユーザではプロンプトの最後に「$」が表示され、rootでは「#」が表示される。
・一般ユーザ
[wantan@localhost ~]$
・rootユーザ
[root@localhost wantan]#
コマンドライン上の移動
必須ではないものの、覚えておくと地味に便利。
試験的な重要度は微妙。
■文頭に移動
「Ctrl」+a
■文末に移動
「Ctrl」+e
シェル変数と環境変数
Linuxのシェル上では、他のプログラミングと同じように変数を扱うことができます。
変数は大きく、シェル変数と環境変数の2種に分類されます。
シェル変数
シェル変数は定義したシェル(あるいはプロセス)内でのみ有効な変数になります。
個人的にはコマンドライン上よりはシェルスクリプトの方でよく使う気がします。
また、試験的にもシェル変数よりは環境変数の方が重要(覚えることが多い)だと思います。
・シェル変数の設定使用例
シェル変数は以下のように設定し、$[変数名]で呼び出すことができます。
[wantan@localhost ~]$ test=wantan [wantan@localhost ~]$ echo $test wantan [wantan@localhost ~]$
また、起動シェルを変えたり、ユーザが切り替えると変数の定義範囲外になるため、値は設定されていない状態になります。
[wantan@localhost ~]$ sh sh-4.2$ echo $test sh-4.2$
設定したシェル変数はunsetコマンドにより削除することができます。
[wantan@localhost ~]$ unset test [wantan@localhost ~]$ echo $test [wantan@localhost ~]$
環境変数
環境変数は設定や呼び出し方法は基本的にはシェル変数と変わりませんが、定義したシェル上で呼び出されるプログラムなどにも適用されます。
■環境変数の設定
環境変数はexport [シェル変数]で設定することができます。
[wantan@localhost ~]$ export test
■環境変数の適用範囲確認
以下では、定義したシェルから呼び出したほかのシェルにも環境変数が適用されていることを確認しています。
[wantan@localhost ~]$ export test [wantan@localhost ~]$ echo $test wantan [wantan@localhost ~]$ sh sh-4.2$ echo $test wantan sh-4.2$
■主要な環境変数
環境変数はユーザが設定することもできますが、そもそもの環境(シェル)に設定されているものあり、システム動作上でも重要な役割を担うものがあります。
・環境変数
環境変数 | 説明 |
---|---|
|
コマンド履歴を格納するファイル |
|
HISTFILEに保存する履歴数 |
|
コマンド履歴の最大数 |
|
カレントユーザのホームディレクトリ |
|
ホスト名 |
|
ロケール |
|
ログインシェルのユーザ名 |
|
コマンドを検索するディレクトリリスト |
|
カレントディレクトリ |
|
現在のユーザ |
変数の表示コマンド
環境変数とシェル変数の表示コマンドはいくつかあり、オプションなどに微妙な違いがあるようですが、LPICレベル1ではそこまで重要視されないようなのでここでは省略します。
・変数の表示コマンド
コマンド | 説明 |
---|---|
printenv | 環境変数の一覧を出力 |
env | 環境変数の一覧を出力 |
set | シェル変数と環境変数の一覧を出力 |
envは環境(environment)で環境変数を指すのでprintenvとenvコマンドで環境変数のみを表示するというのは覚えやすいところだと思います。
環境変数PATH
プロンプトで実行するコマンドはシェル内部に組み込まれている内部コマンドと独立した外部コマンドに大別されます。
ここで言う外部コマンドとは/binや/sbinに含まれるコマンドのことです。
外部コマンドの格納されているディレクトリパスは環境変数PATHに格納され、ここにパスが格納されているコマンドは絶対パスを指定せずとも実行できるという仕組みになっています。
逆に言えば、環境変数PATHに設定されていない場合でも絶対パスで指定すればコマンドは実行できるということになります。
・環境変数PATHの設定例
[wantan@localhost ~]$ echo $PATH /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/wantan/.local/bin:/home/wantan/bin
・環境変数PATHの追加
パッケージをインストールした場合に/usr/local/binなどにコマンドがインストールされるときがあり、その際にPATHが通っていないとコマンドがコマンド名のみで実行できない状態になります。
この状態でも絶対パス表記でコマンドは実行できますが、コマンド名のみで実行できるようにしたい場合にはPATHを追加してあげる必要があります。
PATH=$PATH:/userlocal/bin
注意すべきはPATHの場合はその性質上、上書きを行うことが少なく、追記を行うことが多いです。
試験的にはPATHの性質と変数の追記の記述方法はセットで覚えるべきでしょう。
ーーーーーーーーーーーーーー
・前回(第八回)
www.wantanblog.com
・次回(第十回)
www.wantanblog.com