魔法使いの卵

WEBエンジニアの卵の成長記録

Linuxの自分だけのコマンドを作ってみる

コマンドの中身を作るディレクトリを決める

  • 今回選択したのは以下のディレクトリ
/home/vagrant/.self

コマンドで実行する処理を作成する

  • ファイル内は先頭に#!/bin/shを書くようにする
$ vim .self/hello

#!/bin/sh
echo "HelloWorld!"

権限を変える

  • 誰でもつかえるようにする
chmod a+x .self/hello

パスってなんだろう

というかそもそも$PATHとは何なのか。 何気なく打ち込んでいるコマンド。もちろんLinux内にあるファイルを実行することを示しているが、全ファイルを検索して実行しているのか。 そんな馬鹿なわけがない。 環境変数である$PATHで指定されたディレクトリ限定で検索して実行している。 例えばechoコマンドだって実際は/bin/echoが実行されているわけで、/root/echo があったところで見向きもされない。 だが、逆を返せば$PATHで指定されたところにファイルを置けばコマンドとして認識されるわけだ。 ちなみに、コマンドの場所をフルパスで調べたい場合はwhich command_nameでエンターキーカッターンしよう。

パスが通っている場所を確認する

  • 今の環境では以下のように表示される
echo $PATH
/home/vagrant/.phpenv/shims:/home/vagrant/.phpenv/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/vagrant/.local/bin:/home/vagrant/bin
  • 見難いので分かりやすく並び替えると以下になる
    • :が区切りになっている
/home/vagrant/.phpenv/shims:
/home/vagrant/.phpenv/bin:
/usr/local/bin:
/usr/bin:
/usr/local/sbin:
/usr/sbin:
/home/vagrant/.local/bin:
/home/vagrant/bin
  • 今回は以下のパスを利用する
/usr/local/bin

コマンド化する

  • シンボリックリンクでパスの通っているところに設置するのがキレイ
sudo ln -si ~/.self/hello /usr/local/bin

作成したコマンドを叩いてみる

[vagrant@localhost ~]$ hello
HelloWorld!

おもったこと

  • コマンド作るだけならめっちゃ簡単
  • ファイル名がコマンドになるみたい
  • 問題は何をコマンドで処理させるか
  • 自分が楽できること考えてコマンドを作りたい

参考元

Linux - 自作のコマンドを作成した - Qiita