シェルスクリプト実行許可について
Unix,Linuxの場合、各ファイル毎に実行可能許可を設定することが出来、たとえ実行イメージのファイルであっても実行許可が設定されていなければ実行することは出来ません。例えば、/binのリスト
ls -la /bin を以下に示します。
$ ls -la /bin
合計 7112
drwxr-xr-x 2 root root 4096 7月 3 10:14 .
drwxr-xr-x 24 root root 4096 7月 3 10:55 ..
-rwxr-xr-x 1 root root 3884 5月 16 23:18 alsacard
-rwxr-xr-x 1 root root 16232 5月 16 23:18 alsaunmute
-rwxr-xr-x 1 root root 3084 2月 9 21:43 arch
lrwxrwxrwx 1 root root 4 6月 14 12:31 awk -> gawk
-rwxr-xr-x 1 root root 15996 4月 17 20:47 basename
-rwxr-xr-x 1 root root 716972 7月 12 2006 bash
-rwxr-xr-x 1 root root 20620 4月 17 20:47 cat
-rwxr-xr-x 1 root root 39096 4月 17 20:47 chgrp
-rwxr-xr-x 1 root root 35808 4月 17 20:47 chmod
-rwxr-xr-x 1 root root 41260 4月 17 20:47 chown
-rwxr-xr-x 1 root root 64900 4月 17 20:47 cp
-rwxr-xr-x 1 root root 106340 12月 5 2006 cpio
lrwxrwxrwx 1 root root 4 6月 14 12:42 csh -> tcsh
-rwxr-xr-x 1 root root 31692 4月 17 20:47 cut
-rwxr-xr-x 1 root root 50024 4月 17 20:47 date
リスト左側にある、 -rwxr-xr-x の部分の x が実行許可項目です。ここの x がない場合そのファイルは実行できません。詳細は、パーミッションを検索して下さい。
特に注意が必要な場合としてシェルスクリプトがあります。、Windowsと比較した場合、それはバッチファイルに相当し、ファイル拡張子 .bat
で識別されていまが、Unix,Linuxのシェルスクリプトはそのような取り決めがなくどのようなファイル名でもかまいません。暗黙の了解の様なものとして、.sh
.bsh .csh 等の拡張子がありますが、必ず必要というものではありません。ファイルの中身は単なるテキストのみであるため、対象ファイルが実行可能かどうかの許可設定をする必要があります。
シェルスクリプトの作成例
以下の単純なシェルスクリプトをGNOMEエディターで作成し、ファイル名を test.txt として保存します。
#! /bin/bash
ls -la
特別な設定がなければ、このファイルのパーミションは以下のようになっていると思います。
rw-rw-r-- 1 user1 user1 20 7月 3 16:26 test.txt
リスト左側の rw-rw-r-- 項目に x がないため、実行出来ないファイルとなっています。ちなみいに実行してみると下記のようになります。
$ ./test.txt
bash: ./test.txt: 許可がありません
$
test.txt ファイルを実行可能に設定します。 |
1. |
ファイルブラウザで test.txt を表示させ、マウス右ボタンでメニューを表示させ、プロパティをクリックします。
|
|
|
2. |
@ |
【アクセス権】タグをクリック |
A |
【プログラムとして実行する事を許す。】をチェック状態にします。 |
|
|
|
このファイルのパーミションは以下のように x が付き実行する事が出来ます。
rwxrwxr-x 1 user1 user1 20 7月 3 16:26 test.txt
このページの対象者 (「先輩の手順書」Unix Linux Fedora)
- シェルスクリプトが実行できない。
- シェルスクリプトの拡張子は何?
- ファイルが実行できない。
- Windowsのバッチ処理、バッチファイルのようなものは何?
Copyright (C) 2007 ナスヌーイ All Rights Reserved.