SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【LPIC101】Linuxにおけるシェルと変数 LPICで学ぶLinux⑨


シェル回りのコマンドライン系の基本的な操作について。

シェル

Linux上ではコマンドを入力するとコマンドに応じた処理が実行されます。
実際の処理の実行はLinuxカーネルが担っていますが、ユーザから入力されたコマンドは直接カーネルに届かず、シェルを経由してコマンドが届くことになります。

f:id:wantanBlog:20200721215825p:plain

多くのディストリビューションに使用されるシェルは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  77 00:02 hardttt.txt
drwxrwxr-x. 2 wantan wantan 177  717 22:57 rpm
-rw-r--r--. 2 root   root     0  77 00:02 test.txt
lrwxrwxrwx. 1 root   root     8  77 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

f:id:wantanBlog:20200721230407p:plain

■文末に移動

「Ctrl」+e

f:id:wantanBlog:20200721230543p:plain

シェル変数と環境変数

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 コマンド履歴を格納するファイル
HISTFILESIZE HISTFILEに保存する履歴数
HISTSIZE コマンド履歴の最大数
HOME カレントユーザのホームディレクトリ
HOSTNAME ホスト名
LANG ロケール
LOGNAME ログインシェルのユーザ名
PATH コマンドを検索するディレクトリリスト
PWD カレントディレクトリ
USER 現在のユーザ
変数の表示コマンド

環境変数とシェル変数の表示コマンドはいくつかあり、オプションなどに微妙な違いがあるようですが、LPICレベル1ではそこまで重要視されないようなのでここでは省略します。

・変数の表示コマンド

コマンド 説明
printenv 環境変数の一覧を出力
env 環境変数の一覧を出力
set シェル変数と環境変数の一覧を出力

envは環境(environment)で環境変数を指すのでprintenvenvコマンドで環境変数のみを表示するというのは覚えやすいところだと思います。

環境変数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