1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

自作のシェルスクリプトをコマンドとして実行できるようにする方法

Last updated at Posted at 2021-10-31

今回は作成したシェルスクリプトをパスを指定しなくても起動できるようにする方法をいくつか掲載します。
作成したシェルスクリプトを実行する場合、実行時に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年となりますが、一旦毎週投稿としてはひと区切りとさせていただきます。
次回からは投稿したい内容が決まれば不定期に投稿していこうと思っています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?