さて、前回はシェルスクリプト使うための準備をしました。
前回の説明では、カレントディレクトリを「実行したいシェルスクリプトが保存されているディレクトリ」に変更していました。しかし、カレントディレクトリを毎回、スクリプトの保存されている場所に変更するのは手間です。
今回は、カレントディレクトリがどこになっているかに関わらず、ある場所に保存したシェルスクリプトを、名前だけ指定すれば実行できるようにする方法を紹介します。
(これ以降、解説のためのスクリーンショットはMacで撮影したものを使いますが、Windowsでも手順は同じです)
どこからでも使えるように環境変数にパスを追加
シェルスクリプトの置き場所を作ります。好きな場所に好きな名前のフォルダを作ってください。これから説明する方法によって、そこに保存されたシェルスクリプトが名前だけで実行可能になります。
例としてDocumentsフォルダ内に shellscript というフォルダを作ったという設定で話を進めます。
作ったフォルダの中に、myShellTestという名前のシェルスクリプトを新しく作りましょう。中身を以下のようにしてください。
#!/bin/bash echo "Welcome to ShellScript World!"
このままでは、今まで通りカレントディレクトリをこのフォルダに移動するか、ファイルのパスを指定しなければ実行できません。
それでは、名前だけで呼び出すための設定を始めましょう。ターミナル(Windowsの場合はCygwin)に次のコマンドを入力してください。
export PATH=$PATH:[ディレクトリのパス]
[ディレクトリのパス]の部分に、先ほど作った「shellscript」フォルダのパスを入れます。
実際に実行するパスは以下のようになります。
export PATH=$PATH:/Users/[Username]/Documents/shellscript/
[Username]の部分は、お使いのPCに合わせてください。
Cygwinでは /cygdrive/c/Users/[Username]/Documents/shellscript/ のようになるはずです。
詳しくは説明しませんが、このコマンドは特別な環境変数「PATH」にディレクトリパスを追加するためのコマンドです。
環境変数にパスを追加する前にコマンドを実行した場合と、後にシェルスクリプトを実行した場合の結果画面を以下に示します。
パス追加する前は command not found とエラーが出ますが、パスを追加した後はファイル名だけでシェルスクリプトを実行できていることがわかります。
しかし、ターミナルを閉じてしまうと、ここで設定した環境変数が消えてしまうため、ファイル名でアクセスできなくなってしまいます。
毎回 export するのは面倒なので、ターミナルを起動した際自動的に環境変数を追加するように設定を変更しましょう。ターミナルの設定ファイルである .bash_profile に以下のコマンドを書いておきます。
.bash_profile
# ターミナル起動時に自動的に以下の環境変数を追加する export PATH=$PATH:/Users/[Username]/Documents/shellscript/
これから作っていくシェルスクリプトをこのディレクトリに作っていけば、名前だけで簡単に実行できます。このドキュメントでも断りがない限りは、パスを追加したディレクトリにファイルを保存しているという想定で説明を進めていきます。
次回からは実際にシェルスクリプトを作るための解説をしていきます。