Posted at

自作コマンドの作り方

More than 5 years have passed since last update.


手順


  1. パスが通ったディレクトリを用意する

  2. シバン1を書いたスクリプトを 1.で用意したディレクトリ下に置く

  3. 2.で作ったスクリプトに実行属性を与える


1. パスが通ったディレクトリ

「コマンドを実行する」にあたって必要なのは、その実行ファイルの名前をタイプすることですが、実行するとき /bin//usr/bin/ がカレントディレクトリである必要はありません。どのディレクトリからでもコマンド名のみで実行可能です。

これはどういう仕組みになっているかというと、/bin//usr/bin/ などのディレクトリに、「その中の実行ファイルを任意のディレクトリからフルパスでなく実行できる。」という許可が与えられているからです。

その許可は、環境変数 PATH によって与えられます。

$ echo $PATH

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

環境変数 PATH はコロン(:)で区切られています。実際に追加してみましょう。

$ mkdir ~/bin

$ PATH="~/bin:$PATH"
$ echo $PATH
~/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

先頭に追加されていることがわかります。これでパスが通ったディレクトリを準備出来ました。


2. シバンを書いたスクリプト

シバンとは #! から始まる1行目のことを指します。具体的には以下。

$ cat <<EOF >firstprog.sh

> #!/bin/sh
>
> if [ `ls ~ | wc -l` -eq 0 ]; then
> echo "file not exist."
> else
> echo "file exist."
> fi
EOF

$ ls
firstprog.sh

この例は、ホームディレクトリのファイルがあるかどうかを調べるスクリプトです。


今回は、これを 1. で用意したディレクトリ下に置きましょう。


3. 実行属性を与える

これは簡単です。


ファイル属性・所有者権限を変更するコマンド chmod を使用します。

$ ls -l firstprog.sh

-rw-r--r-- 1 tester staff 0 Aug 9 15:27 firstprog.sh
$ chmod 755 firstprog.sh
$ ls -l firstprog.sh
-rwxr-xr-x 1 tester staff 0 Aug 9 15:27 firstprog.sh

x フラグ が立っていることがわかります。これで実行属性が付与されました。


結果

以上で、自作コマンドを作成できました。

これにより ~/bin 以外のどのディレクトリからでもスクリプトを実行出来ます。





  1. シバンまたはシェバン (shebang) とはUNIXのスクリプトの#!から始まる1行目のこと。起動してスクリプトを読み込むインタプリタを指定する。 hash-bangまたはsharp-bangとも言うが、後者を縮めたshebangという呼び方が一般的かつシンプルである。