LPIC101の試験には合格したのでLPIC102をぼちぼちと。
シェル変数と環境変数
LPIC101の復習的な内容ですが、環境変数とシェル変数についてです。
■シェル変数
定義したシェル(あるいはプロセス)内でのみ有効な変数
■環境変数
定義したシェル上で呼び出されるプログラムなどにも適用
環境変数はexport コマンドを使用することにより、シェル変数から設定することができる。
[wantan@localhost ~]$ export test
・変数の表示コマンド
変数の表示コマンドはLPIC101の範囲ではありますが、一応確認しておいた方がよさそうです。
コマンド | 説明 |
---|---|
printenv | 環境変数の一覧を出力 |
env | 環境変数の一覧を出力 |
set | シェル変数と環境変数の一覧を出力 |
シェル環境の設定
シェルオプションの設定
シェルには様々なオプションがあり、変数の出力にも使用したsetコマンドを使用することで設定の切り替えを行います。
感覚的なプラスマイナスと設定解除が逆転する点に注意。
※私は一瞬混乱した
・オプションを設定する
set -o [オプション]
・オプションを解除する
set +o [オプション]
■変数を自動的にエクスポートする
set -o allexport
変数のエクスポートを自動で行う。つまりはシェル変数の設定方法でエクスポートコマンドを使用しなくても環境変数の設定を行うことができます。
全てエクスポートなのでオプション的には覚えやすいですね。
■emacs風のキーバインドにする
set -o emacs
コマンドライン入力をエディタである「emacs」(イーマックス)風にします。
私はemacs自体はまともに使用したことがなかったですが、普段使っているコマンドラインの入力が既にemacs風に設定されていたっぽい。。
ちょっと混乱してしまった。
同様に「vi」エディタ風のキーバインドにすることもできます。
set -o vi
■Ctrl+Dでの間違いログアウトを防ぐ
set -o ignoreeof
EoF(Ctrl+D)を無視するの意ですね。
LPIC101をやっていながら恥ずかしいですが、Ctrl+Dでログアウトできることを認識していませんでした。
・実行例
[wantan@localhost ~]$ set -o ignoreeof [wantan@localhost ~]$ シェルから脱出するには "exit" を使用してください。 [wantan@localhost ~]$ set +o ignoreeof [wantan@localhost ~]$ exit
二行目は設定してCtrl+D、四行目が解除してCtrl+Dを押した結果です。
■メタキャラを使ったファイル展開を無効にする
set -o noglob
検索などに用いる「*」などが無効になります。
■設定を確認する
いろいろ試して触っていると今がどの状態か忘れることもあるので以下のコマンドで現状の設定を表示します。
このコマンドで設定可能なオプションを確認して必要に応じて追加学習していってもいいでしょう。
[wantan@localhost ~]$ set -o allexport off braceexpand on emacs on errexit off errtrace off functrace off hashall on histexpand on history on ignoreeof off interactive-comments on keyword off monitor on noclobber off noexec off noglob off nolog off notify off nounset off onecmd off physical off pipefail off posix off privileged off verbose off vi off xtrace off
エイリアスの設定
IT用語では比較的きく機会も多いですが、エイリアスは別名のことです。
Linuxシステムでは狭義的に「alias」コマンドで、コマンドに別名をつけて呼び出せるようにすることをさします。
実践的にオプションを含むコマンドのエイリアスを作成してよく使用するコマンドをオプションも含めてすぐに実行できるようにするなどの用途で使う機会が多いでしょう。
■コマンドに別名をつける
alias [別名]='[コマンド]'
・実行例
[wantan@localhost ~]$ alias cdt='cd /tmp' [wantan@localhost ~]$ cdt [wantan@localhost tmp]$
解除については同様に「unalias」コマンドを使用します。
unalias [別名]
・実行例
[wantan@localhost tmp]$ unalias cdt [wantan@localhost tmp]$ cdt -bash: cdt: コマンドが見つかりません
また「alias」コマンドのみを実行すると現在設定されているエイリアスを表示することができます。
[wantan@localhost ~]$ alias alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias vi='vim' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
余談、実行しているコマンドがどんなエイリアスになっているかは他にもaliasコマンドを使ったり、typeコマンドでも確認できますね。
[wantan@localhost ~]$ alias ll alias ll='ls -l --color=auto' [wantan@localhost ~]$ type ll ll は `ls -l --color=auto' のエイリアスです
関数の定義
Linuxではコマンドライン(シェル内)でも関数を定義して呼び出すことができます。
シェルスクリプト内では見たこともあるけど、コマンドライン上では使用したことがありませんでした。
関数の定義にはfunctionコマンドを使用します。
function [関数名]( [コマンド]; )
・実行例
[wantan@localhost ~]$ function testls { ls -al; } [wantan@localhost ~]$ testls 合計 24 drwx------. 5 wantan group1 135 9月 29 23:44 . drwxr-xr-x. 3 root root 20 7月 3 09:00 .. -rw-------. 1 wantan group1 6504 10月 6 23:44 .bash_history -rw-r--r--. 1 wantan group1 18 4月 1 2020 .bash_logout -rw-r--r--. 1 wantan group1 193 4月 1 2020 .bash_profile -rw-r--r--. 1 wantan group1 231 4月 1 2020 .bashrc drwxrw----. 3 wantan group1 19 7月 25 03:16 .pki -rw-------. 1 wantan group1 955 8月 22 00:11 .viminfo drwxrwxr-x. 4 wantan group1 216 8月 18 23:12 lpic drwxrwxr-x. 6 wantan group1 188 7月 31 18:04 work
定義した関数を表示するにはdeclareコマンドを使用します。
[wantan@localhost ~]$ declare -f testls () { ls --color=auto -al }
また、定義した関数を削除するにはunsetコマンドを使用します。
[wantan@localhost ~]$ unset testls [wantan@localhost ~]$ testls -bash: testls: コマンドが見つかりません
ーーーーーーーーーーーーーーー