bashのエイリアス機能
bashシェルでは、エイリアスを利用することでコマンドの別名を定義したり、コマンドとそのオプションをまとめて一つの新しいコマンドとして実行できる。エイリアス機能を使用するためにaliasコマンドを使用。
alias 別名="コマンド"
# llと入力するだけで「ls -l」を実行できるようエイリアスを作成
$ alias ll="ls -l"
# llを実行
$ ll
total 1000
-rw-r--r-- 1 root staff 1021 9 5 23:14 README.md
-rw-r--r-- 1 root staff 3577 9 5 23:14 angular.json
-rw-r--r-- 1 root staff 429 9 5 23:14 browserslist
drwxr-xr-x 5 root staff 160 9 5 23:14 e2e
-rw-r--r-- 1 root staff 1016 9 5 23:14 karma.conf.js
drwxr-xr-x 790 root staff 25280 9 20 22:46 node_modules
-rw-r--r-- 1 root staff 473349 9 20 22:46 package-lock.json
-rw-r--r-- 1 root staff 1321 9 20 22:46 package.json
drwxr-xr-x 11 root staff 352 9 5 23:14 src
-rw-r--r-- 1 root staff 270 9 5 23:14 tsconfig.app.json
-rw-r--r-- 1 root staff 543 9 5 23:14 tsconfig.json
-rw-r--r-- 1 root staff 270 9 5 23:14 tsconfig.spec.json
-rw-r--r-- 1 root staff 1988 9 5 23:14 tslint.json
エイリアスの設定を削除するためには、unaliasコマンドを使用する。
unalias 別名
$ unalias ll
bashのシェル関数
bashシェル上で利用できる独自の関数を定義するには、functionコマンドを使用する
function シェル関数名(){コマンド;}
# llという名前のシェル関数を定義して、ls -ltr | more コマンドが実行されるように設定
$ function ll(){ ls -ltr | more; }
シェル関数の設定を削除するためには、unsetコマンドを使用する。
unset シェル関数
$ unset ll
※単純なコマンドの組み合わせの場合、aliasを利用するが、より複雑な処理をする場合はfunctionコマンドを利用する。
bashのシェルオプション
setコマンドでオプションを指定することでシェルの様々なオプション機能をオン、オフにできる。setコマンド構文において、-oとすればオプションが有効になり、+oとすればオプションが無効になる。
set [-o][+o] オプション
オプション | 説明 |
---|---|
allexport | 作成または変更した変数を自動的にエクスポート |
emacs | emacsのようなキーバインドにする |
vi | viのようなキーバインドにする |
ignoreeof | Ctrl+Dのキー入力でログアウトしないようにする |
noclobber | 既存ファイルへの上書き出力(リダイレクト)を禁止する |
noglob | メタキャラクタを使用したファイル名の展開を無効化する |
# 既存ファイルへの上書き出力( リダイレクト )を禁止する設定
$ set -o noclobber
$ echo 11111 > test.txt
# bash: test.txt: cannot overwrite existing file ← 上書き不可のメッセージが出力
# メタキャラクタを使用したファイル名の展開を無効化する設定
$ set -o noglob
$ ls *.txt
# ls: *.txt: No such file or directory ← メタキャラクタの * が無効であり、*.txt ファイルは存在しないと出力されている
bashの設定ファイル
シェル起動時と終了時に「環境変数、エイリアス、シェル関数」などの定義を自動的に行うための設定ファイルが存在する。bashの設定ファイルには、以下のようなファイルがある。
ファイル | 説明 |
---|---|
/etc/profile | ログイン時に実行される。(全ユーザが参照する設定ファイル) |
~/.bash_profile | ログイン時に実行される |
~/.bash_login | ~/.bash_profileがない場合に、ログイン時に実行される |
~/.profile | ~/.bash_profile, ~/.bash_loginが存在しない場合にログイン時に実行される |
~/.bashrc | bash起動時に実行される |
~/.bash_logout | ログアウト時に実行される |
/etcディレクトリ以下の設定ファイルは全ユーザに適用され、ホームディレクトリ以下の設定ファイルは、ユーザごとに適用される。以上から、全てのユーザで共通に使用する環境変数を設定するためには/etc/profileに設定する。ユーザ別に環境変数を設定する場合は~/.bash_profileファイルに設定する。
システムにログインする場合の設定ファイルの実行順夫は以下。