シェルスクリプトを実行するには設定を変更する必要があります.
今回はファイルに実行権限を与えシェルスクリプトを実行する方法を紹介します.
ファイルに実行権限を付与する
ファイルを作成した段階ではまだファイルの実行権限はありません.ls -l
コマンドでファイルの設定情報を確認してみましょう.
-rw-r--r--
が20231017_shell_exec.sh
ファイルのパーミッション情報です.
パーミッションの読み方
パーミッションについて軽くおさらいしておきます.
1文字目はファイルタイプを表します.-
はファイル,d
はディレクトリを意味します.
rw-r--r--
2文字目~10文字目はユーザーやグループが持つ権限を表します.
これは3つに区切ることができます.
- 1区切り目(2文字目~4文字目):ファイル所有者に対する権限
- 2区切り目(5文字目~7文字目):ファイル所有グループに対する権限
- 3区切り目(8文字目~10文字目):その他に対する権限
そしてアルファベットはこのような意味を持ちます.
アルファベット | 意味 |
r | 読み取り権限 |
w | 書き込み権限 |
x | 実行権限 |
– | 権限なし |
以上から20231017_shell_exec.sh
はファイルタイプがファイルであり,所有者(自分)は読み取り権限と書き込み権限があると分かります.
実行権限がなかったため,シェルスクリプトを実行できなかったんですね.
chmodコマンドで権限を変更する
ファイルやディレクトリのパーミッションを変更するにはchmod
コマンドを使います.chmod
は change mode の略語ですね.
$ chmod ファイルモード <ファイル名>
chmod
コマンドは2つの方法でパーミッションを変更できます.
- シンボルモード
- 数値モード
今回はシンボルモードで20231017_shell_exec.sh
に実行権限を与えます.
$ chmod u+x ./Linux/20231017_shell_exec.sh
u+x
とすることでファイル所有者(オーナー)にx(実行権限)を与えました.ls -l
コマンドで確認するとファイル所有者の欄にx(実行権限)が増えていますね!
ファイルパスを入力する
ターミナルでファイルまでのパスを入力し実行します.
$ ./PATH/ファイル.sh
変数が出力できました!
シェルスクリプトがうまく実行できないときはファイルパーミッションを確認しましょう.
まとめ
今回はシェルスクリプトを実行する方法を紹介しました.
ファイルを作成したデフォルトの状態では実行権限がないので,シェルスクリプトを実行する前にパーミッションを変更しておきましょう.
エラーが出た場合も焦る必要はありません.メッセージ(Permission denied)を読み,権限不足にきづければ楽勝ですね!