記号表記による権限の変更
数値表記は簡潔ですが、特定の権限だけを変更したい場合は 記号表記(シンボリック表記) の方が直感的な場合があります。記号表記では、ユーザー、グループ、その他を表す文字と、権限を追加または削除する演算子を使用します。
まず、内容を含む新しいスクリプトファイルを作成します。
cd ~/project
echo '#!/bin/bash\necho "Hello, World"' > script.sh
このコマンドは 2 つのことを行います。
script.sh という名前の新しいファイルを作成します。.sh 拡張子はシェルスクリプトによく使われます。シェルスクリプトは、一連のコマンドを順番に実行する実行ファイルです。
- このファイルに 2 行書き込みます。
#!/bin/bash(シバン/シェバンと呼ばれます)は、これが bash スクリプトであることをシステムに伝えます。この行は、スクリプトの実行に使用するインタプリタを指定します。ここでは Bash インタプリタのパスである /bin/bash を指定しています。
echo "Hello, World" は、スクリプト実行時に "Hello, World" と表示するコマンドです。
\n は改行文字で、コマンドがファイル内で別々の行になるようにします。
初期権限を確認します。
ls -l script.sh
次のように表示されるはずです。
-rw-rw-r-- 1 labex labex 32 Jul 29 16:30 script.sh
見ての通り、初期状態では所有者とグループには読み書き権限があり、その他には読み取り権限しかありません。プログラムとして実行するために必要な「実行権限」がありません。
スクリプトを実行しようとしてみましょう。
./script.sh
実行権限がないため、"Permission denied" エラーが表示されるはずです。./ は、現在のディレクトリにあるスクリプトを実行するようシェルに指示するものです。
では、記号表記 を使って所有者に実行権限を追加してみましょう。
chmod u+x script.sh
このコマンドにおいて:
u はユーザー(所有者)を指します。他のオプションには、グループの g、その他の o、全員(ユーザー、グループ、その他)の a があります。
+x は実行権限を追加します。+ 記号は権限の追加、- 記号は権限の削除を意味します。
つまり、u+x は「所有者に実行権限を追加する」という意味になります。
変更を確認します。
ls -l script.sh
次のように表示されるはずです。
-rwxrw-r-- 1 labex labex 32 Jul 29 16:30 script.sh
所有者が rwx(読み取り、書き込み、実行)権限を持つようになりました。
もう一度スクリプトを実行してみましょう。
./script.sh
今度は、"Hello, World" という出力が表示されるはずです。
この例は、なぜスクリプトに実行権限を追加する必要があるのか、そして権限追加の前後で何が変わるのかを明確に示しています。記号表記を使えば、数値全体を再計算することなく、特定の権限だけを簡単に変更できます。