今回は作成したシェルスクリプトをパスを指定しなくても起動できるようにする方法をいくつか掲載します。
作成したシェルスクリプトを実行する場合、実行時にbash <スクリプト名>.sh
というふうにbash
を指定するか、<スクリプトへのパス/<スクリプト名>.sh
というふうにスクリプトへのパスを絶対パスか相対パスで指定する必要がありますが、ひと手間加えれば普通のコマンドのようにスクリプト名単体で呼び出しすることができるようになります。
/usr/local/binへシンボリックリンクを追加する方法
簡単な方法としては、/usr/local/bin
ディレクトリ内へシンボリックリンクを追加する方法です。
具体的な手順としては以下の通りです。
1.作成したスクリプトに実行権限を付与する
chmod 770 /home/USER/shell.sh #権限770は一例として
2./usr/local/binへシンボリックリンクを作成する
ln -s /home/USER/shell.sh /usr/local/bin/
これだけです。
あとは作成したスクリプトファイル名でシェルを呼び出せるか確認します。
参考サイト様:https://tsujitaku50.hatenablog.com/entry/2017/12/30/120046
環境変数PATHにスクリプトへのパスを通す方法
こちらは、linuxがアクセスする各コマンドへのパスが格納されている環境変数PATH
へ、対象スクリプトへのパスを追加する方法です。
こちらは1行で完結するので、上記よりもさらに簡単ですが、スクリプトを格納するパスの中が全て参照されるので、場所によってはセキュリティリスクが上がってしまうかもしれません。
コマンドは以下の通りです。
export PATH=$PATH:<スクリプトが格納されているパス>
# 確認方法
echo $PATH #一番後ろに追加したパスが存在していればOK
たった1行で済むので簡単ですが、最大の問題としては再起動後に設定が消えてしまう事です。
これを防ぐには1つめに紹介した方法を使うか、次に紹介する方法を追加で実施する事です。
~/.bash_profileにパスを追加する
上記で紹介したパスを永続化させる方法です。
viで~/.bash_profile
を開き、上記export PATH=$PATH:<スクリプトが格納されているパス>
を記載して保存します。
すでにexport PATH
が存在していれば、:
区切りで後ろにパスを追記します。
そのままだと再起動後、または次のログイン時に適用されますが、~/.bash_profileファイルの編集後に以下のコマンドを実行すればすぐに適用されます。
source ~/.bash_profile
スクリプト起動時のカレントディレクトリについて
余談ですが、パスを通した後にシェルスクリプトを実行した際に、そのスクリプトが配置されたディレクトリ以外で起動した場合、スクリプト実行中のカレントディレクトリはスクリプトファイルが配置された場所ではなく実行時のカレントディレクトリとなります。
どういう事かと言いますと、まず以下のようなスクリプトを/home/USER
内へ配置したとします。
# !/bin/sh
pwd
exit 0
上記のスクリプトに実行権限とパスを通し、/home/USER/dir
ディレクトリ内で実行したとします。
すると、実行結果は/home/USER/dir
が返ってきます。
シェルスクリプトの仕様を知っている方であれば当然と思われるかもしれませんが、忘れてしまうと厄介な事になりそうなので、メモとして残しておきたいと思います。
以上となります。
今回で毎週投稿を初めてからおよそ1年となりますが、一旦毎週投稿としてはひと区切りとさせていただきます。
次回からは投稿したい内容が決まれば不定期に投稿していこうと思っています。