はじめに
何で今更こんな事を書くのかというと、ふとちょっとしたスクリプトを作成して、それをコマンドにしようと思った時に、実行が出来なくてPATHが通せていないことに気づいたものの手が止まってしまったので、このタイミングで覚え書きみたいなものを作っておこうと思ったからです。
あとsourceコマンドとか理解が浅いとかねてから感じていたため。
Windowsだったらシステムの環境変数にフォルダを追加するあれです。
コマンドの作り方
今回は例として下の「hello.sh」コマンドを作成します。
※実行権限を付与する。
#!/bin/bash
echo "hello"
現在のPATHがどうなっているか見てみると……
$ pwd /home/centos
$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/centos/.local/bin:/home/centos/bin
ここにカレントディレクトリを追加する。
exportコマンドでシェル変数を定義しながら環境変数にエクスポートする。
環境変数に入れることで子シェルからも呼べるようになる。
$ export PATH=$PATH:/home/centos
$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/centos/.local/bin:/home/centos/bin:/home/centos
$ hello.sh
hello
スクリプトをコマンドの様に実行出来るようになりました。
しかしこれでは不十分です。
.bashrc
先程までの状態ではログインし直すとhello.shコマンドを打てなくなってしまいます。
……ので、ログインする時に必ず実行される.bashrcファイルに先程のexportの部分を記述しておくことでログインし直してもコマンドを実行出来るようになります。
また、確認する際にログインし直すのが面倒な場合次を実施すればいいです。
$ source .bashrc
もしくは
$ . .bashrc
これは現在のシェルでファイルを実行するコマンドです。
以上、PATHの通し方でした。
面倒なら
もっと早い手段もある。
それは既にパスの通っているフォルダにスクリプトをコピーしてしまうことだ。
むしろパスが肥大化せず一か所でコマンドを管理できるのでこちらの方が良いのかもしれません。