今日からLinuC102の試験勉強を始め、3日で取得することを目指します。
1.シェルおよびスクリプト
ログインシェルとして起動した際に、下記の順番でファイルは呼ばれます。
ログインシェルとは、ユーザ認証とセットで起動される初期化の役割を持つファイルです。
ログインシェル:環境の初期化(PATH,環境変数)
非ログインシェル:日常的な操作(alias,プロンプト)
イメージとしては下記の流れになります。
ログイン
↓
「ログインシェル」※初回だけ
↓
ターミナルを開く
↓
「非ログインシェル」←複数回
🔑 ログイン時に読み込まれるファイル(ログインシェル)
Bashを「ログインシェル」として起動したとき、次の順で最初に見つかった1つだけが読み込まれます:
~/.bash_profile
最優先で読み込まれる
主にログイン時の環境設定を書く
例:
PATHの設定
環境変数
起動時に実行したいコマンド
👉 一般的に一番よく使われる
~/.bash_login
.bash_profile が無い場合に使われる
役割はほぼ同じ
👉 あまり使われない(歴史的な理由で存在)
~/.profile
上の2つが無い場合に使われる
Bash以外のシェルでも使われる共通設定ファイル
👉 POSIX準拠の汎用設定
💻 非ログインシェルで読み込まれるファイル
~/.bashrc(bash run commmands)
新しいターミナルを開いたときなど(非ログインシェル)
毎回読み込まれる
主に:
エイリアス
関数
プロンプト設定
👉 一番頻繁に使うファイル
🚪 ログアウト時に読み込まれる
~/.bash_logout
ログインシェル終了時に実行される
例:
画面クリア
一時ファイル削除
2.シェルスクリプトの利用
定義したシェル関数の一覧を出力するコマンド
declare -f
typeset -f
set
シェルの実行方法には下記2つがある。
■子シェルでの実行
①実行権限を付与してファイル名を指定して実行
②shコマンド(bashコマンド)の引数として実行
■現行のシェルで実行
③sourceコマンドの引数として実行
④.(ドット)コマンドとしての引数として実行
~/.bashrcファイルを、PCを切らずに原稿シェルに反映させるための方法は、下記2つがある。
source シェル名
. シェル名
例えば、~/.bashrcファイルを現在のシェルに反映させるには、下記2つがある。
. .bashrc
source .bashrc
イメージとしてはsourceは「設定を再読み込み」、bashは「新しいシェル起動」になる。
3.#!/bin/bashのおまじない
スクリプト1行目に書かれている「#!/bin/bash」なんだこれって思った人多いのでは?
これはBashで実行する指定のために記載する文言でシバン(Shebang)と呼びます。
実行中のユーザのシェルに関係なく、「/bin/bash」を使用してスクリプトを実行することができます。
#!を見つけるとカーネルは/bin/bashを起動し、スクリプトを引数に設定します。
###シバンあり###
#!/bin/bash ← /bin/bashを使用する宣言
echo "Success task"
###シバンなし###
echo "Success task"
上記の場合、シバンなしだとbashで強制実行されることになる。
権限がない時はbash実行が良いが、基本は「./」で実行するケースが多い。
今日は寝ます。おやすみ。