質問 :シェル スクリプトを実行するために知っておくべき基本的な基本事項は何ですか?また、シェル スクリプトを実行すると、「許可が拒否されました」というエラー メッセージが表示されます。どうすれば修正できますか?
答え :シェル スクリプトの実行について知っておくべき 4 つの基本事項を確認しましょう。
1.シェル実行可能ファイルを見つけて、she-bang #!
として指定します。シェルがインストールされている場所のフル パスを特定します。
$ which sh /bin/sh (or) $ which ksh $ which bash
シェル実行可能ファイルの場所を特定したら、シェル スクリプト ファイルの最初の行でそれをシバン ( #! ) として指定します。
$ vim helloworld.sh #!/bin/sh echo "Hello World!"
2.シェル スクリプト ファイルに実行権限を割り当てる
スクリプトの実行権限がない場合、以下に示すように「権限が拒否されました」というエラー メッセージが表示されます。
$ ./helloworld.sh bash: ./helloworld.sh: Permission denied
以下に示すように、chmod コマンドを使用してスクリプト ファイルに実行権限を割り当てます。
$ chmod u+x helloworld.sh
グループなどに実行権限を与えたい場合は、以下のようにします。
$ chmod 755 helloworld.sh
注: これを自動プロセスとして作成することもできます。つまり、シェル スクリプト ファイルを開くたびに、必要なこと (シバンの追加と実行権限の付与) の両方を、bash-support.vim プラグインを使用して自動的に行うことができます。詳細については、以前の記事 Make Vim as Your Bash-IDE Using bash-support Plugin を参照してください。
3.絶対パスまたは相対パスを指定してスクリプトを実行
絶対パスまたは相対パスを使用して、シェル スクリプトを実行できます。
以下のように絶対パスを指定してスクリプトを実行します。
$ /home/ramesh/scripts/helloworld.sh Hello World!
以下のように相対パスを指定してスクリプトを実行します。
$ cd /home/ramesh/ $ ./scripts/helloworld.sh Hello World! (or) $ cd /home/ramesh/scripts $ ./helloworld.sh Hello World!
4.通常の Linux コマンドと同じようにスクリプトを実行する
フルパス、絶対パス、相対パスを指定せずにスクリプトを実行することもできます。これを行うには、以下に示すように、すべてのシェル スクリプトが配置されているディレクトリを PATH 環境変数に追加します。
たとえば、/home/ramesh/scripts を PATH 環境変数に追加すると、任意のディレクトリからスクリプトを実行できます。
$ export PATH=$PATH:/home/ramesh/scripts $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/ramesh/scripts $ cd /go/to/anydirectory $ helloworld.sh Hello World!