Macのターミナルで使える、いわゆる自作コマンドを作る方法について。
bashがベースだった頃のやり方はググればたくさん出てきますが、Mac OS Catalina から zsh になり、以前と少しやり方が違っていてちょっとつまづいたのでメモしておきます。
bashの頃にお世話になった参考記事
上記の記事と比べて、ちょろっと書く内容や用意するファイル名が違うだけになります。
① コマンドファイルを配置するフォルダを作成する
自作コマンドごとにファイルを作成するのですが、それらを配置するフォルダをまずは作成しておきます。
今回は例として、ホームディレクトリ直下にmycommand
というフォルダを作成するとします。
ホームディレクトリに mycommands
を作成。
mkdir ~/mycommands
② フォルダまでのパスを通す
今作成したmycommand
というフォルダの中にあるファイルをコマンドとして認識してもらうために、「パスを通す」必要があります。
Mac OS Catalinaからは zsh になっているので、.zshrc
というファイルを編集します。
このファイルがホームディレクトリにまだなければ、自分で作成してください。
.zshrc
を作成する(なければ)
touch ~/.zshrc
.zshrc
が作成できたら(もとからあれば)、VS Codeなどのテキストエディタで開いて以下の一文を追記します。
mycommands
までのパスを通す
export PATH=$HOME/mycommands:$PATH
$HOME
が~
にあたります。
bashの時は、:$PATH
が頭の方で書かれている記事が多いですが、zshはその書き方だとうまくいきませんでした。
.zshrcの変更を反映させる
今編集した内容を、source
コマンドを使って即時反映させておきます。
変更内容を反映させる
source ~/.zshrc
③ コマンドファイルを作成する
①で用意したmycommand
に、自作コマンドとして動かしたいファイルを作成します。
今回は例として、test-command
というコマンドを自作してみましょう。
拡張子のなしの、自作したいコマンド名をそのままファイル名にして作成します。
test-command
というファイルを作成する
touch ~/mycommands/test-command
コマンドファイルの権限を755に設定しておく
さらに、このファイルを実行できるように権限を調節しておきます。
test-command
というファイルの権限を755
に変更
sudo chmod 755 ~/mycommands/test-command
※ この時、Macのユーザーパスワードを求められると思います。
④ コマンドファイルに好きな処理を書く
③で作成したtest-command
にコマンドの処理内容を記述します。
今回は例として、ただ「やっほー!」と文字列を出力するだけのコマンドにしてみます。
test-command
に処理を書く
#!/bin/sh
echo "やっほー!"
冒頭の!/bin/sh
はおまじないみたいなもので、詳しくは調べてないですがとりあえず書いとけばOKっぽいです。
⑤ 自作コマンド呼び出す
さて、ここまで来ればコマンドが動くはずです!
以下のコマンドを実行してみましょう。
test-command
「やっほー!」と表示されればOK!
動かなければターミナルを再起動したりしてみてください。
おまけ:コマンドの引数の受け取り方
さて、ここからはおまけです。
コマンドに投げた引数は、$1
、$2
...のように受け取ることができます。
「やっほー!」という決まった文字列じゃなくて、引数に渡した文字列を受け取りそのまま出力するようなコマンドにしてみましょう。
test-command
を編集
#!/bin/sh
echo $1
そして以下のようなコマンドを実行してみてください。
test-command yahhooooo
yahhooooo
と表示されれば成功です。