このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンドの基本:シェルスクリプトの自分専用の配置場所を作る

シェルスクリプトの自分専用の配置場所を作る

 シェルスクリプトを作成し、それを独自のコマンドとして手軽に実行できるようにすることは、日々の作業効率を大幅に向上させます。ここでは、自分専用のシェルスクリプト置き場を作成し、どのディレクトリからでもスクリプトをコマンドのように実行できるように設定する方法を詳しく解説します。

シェルスクリプトを独自コマンドとして利用する

 通常、シェルスクリプトを実行する際には、スクリプトの場所を指定する必要があります。しかし、システムのコマンドのように、ファイル名だけでスクリプトを実行できれば、作業がよりスムーズになります。

システムのコマンドが配置されているディレクトリ

一般的なコマンドは以下のディレクトリに配置されています。

  • /bin
  • /usr/bin
  • /usr/local/bin

 しかし、これらのディレクトリにファイルを配置するには管理者権限が必要であり、システムの安全性や管理上の理由から、自分専用のスクリプトをこれらのディレクトリに置くのは避けた方が良いです。

 そこで、自分のホームディレクトリ内にスクリプトを置く専用のディレクトリを作成し、それをコマンド検索パスに追加する方法を取ります。

手順概要

  1. ~/bin ディレクトリの作成
  2. シェルスクリプトの作成と配置
  3. 実行権限の付与
  4. 環境変数 PATH~/bin を追加
  5. 設定の反映
  6. 動作確認

以下、各ステップを詳細に解説します。

ステップ1:~/bin ディレクトリの作成

~/bin は、自分専用の実行ファイルを置くためのディレクトリとして慣習的に使用されます。

user01@ubuntu:~$ mkdir ~/bin

解説

  • mkdir ~/bin:ホームディレクトリ(~)に bin というディレクトリを作成します。
  • ~(チルダ)は、現在のユーザーのホームディレクトリを指します。例えば、ユーザー名が user01 の場合、~/home/user01 を意味します。

~(チルダ)の意味

  • ホームディレクトリの省略表記として使用されます。
  • コマンドラインで ~ を使用すると、常に自分のホームディレクトリを指すため、スクリプトやコマンドをユーザー固有の場所で扱う際に便利です。

ステップ2:シェルスクリプトの作成と配置

シェルスクリプトの作成

 例として、ホームディレクトリのディスク使用量を表示する disksize.sh というシェルスクリプトを作成します。

user01@ubuntu:~$ nano disksize.sh

disksize.sh の内容

#!/bin/bash
du -h ~ | tail -n 1

解説

  • #!/bin/bash:このスクリプトが bash シェルで実行されることを指定するシェバン行です。
  • du -h ~:ホームディレクトリのディスク使用量を人間に読みやすい形式で表示します。
  • | tail -n 1:出力の最後の行(ホームディレクトリの合計使用量)だけを表示します。

スクリプトの配置

作成したスクリプトを ~/bin ディレクトリに移動します。

user01@ubuntu:~$ mv disksize.sh ~/bin

解説

  • mv disksize.sh ~/bin/:現在のディレクトリにある disksize.sh~/bin/ に移動します。

ステップ3:実行権限の付与

スクリプトを実行可能にするために、実行権限を付与します。

user01@ubuntu:~$ chmod +x ~/bin/disksize.sh

解説

  • chmod +x ~/bin/disksize.shdisksize.sh に実行権限を追加します。

ステップ4:環境変数 PATH~/bin を追加

 シェルはコマンドを実行する際、環境変数 PATH に指定されたディレクトリを検索します。~/binPATH に追加することで、disksize.sh をどのディレクトリからでもファイル名だけで実行できるようになります。

現在の PATH の確認

user01@ubuntu:~$ echo $PATH

出力例

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
/usr/games:/usr/local/games:/snap/bin:/snap/bin

解説

  • echo $PATH:現在の PATH の内容を表示します。

.bashrc ファイルの編集

~/.bashrc ファイルに ~/bin を追加する設定を追記します。

user01@ubuntu:~$ nano ~/.bashrc

ファイルの末尾に以下の行を追加します

export PATH="$PATH:~/bin"

解説

  • export PATH="$PATH:~/bin":既存の PATH の末尾に ~/bin を追加し、環境変数 PATH を更新します。

PATH の設定内容の説明

  • $PATH:現在の PATH の値。
  • :(コロン):ディレクトリを区切るセパレータ。
  • ~/bin~/bin ホームディレクトリの絶対パス。

ポイント

  • この設定により、~/bin に配置したスクリプトをコマンドのように実行できます。

ステップ5:設定の反映

~/.bashrc の変更を現在のシェルに反映させます。

user01@ubuntu:~$ source ~/.bashrc

解説

  • source ~/.bashrc~/.bashrc ファイルを再読み込みし、設定を現在のシェルに適用します。
  • これにより、再ログインせずに設定を反映できます。

ステップ6:動作確認

新しい PATH の確認

user01@ubuntu:~$ echo $PATH

出力例

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
/usr/games:/usr/local/games:/snap/bin:/snap/bin:~/bin

解説

  • ~/binPATH に追加されていることが確認できます。

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
  ↓
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:~/bin

スクリプトの実行

カレントディレクトリに関係なく、disksize.sh を実行します。

user01@ubuntu:~$ disksize.sh

出力例

17M	/home/user01

解説

  • disksize.sh と入力するだけでスクリプトが実行されました。
  • PATH~/bin が含まれているため、シェルが disksize.sh を見つけて実行します。

まとめ

  • ~/bin ディレクトリを作成し、自分専用のシェルスクリプト置き場を準備しました。
  • シェルスクリプトに実行権限を付与し、~/bin に配置しました。
  • 環境変数 PATH~/bin を追加することで、スクリプトをファイル名だけで実行できるように設定しました。
  • source ~/.bashrc コマンドで設定を反映し、再ログインせずにすぐに利用可能にしました。
  • コマンドのようにシェルスクリプトを実行できるようになり、作業効率が向上しました。

 これで、自分専用のシェルスクリプト置き場が完成し、独自のコマンドを作成・管理する環境が整いました。これから作成するシェルスクリプトを ~/bin に配置することで、システム全体に影響を与えることなく、便利なコマンドを追加していくことができます。