これはなに

Shell scriptが実行できないときに確認することのメモ。
確認することリスト

実行権限を確認する

実行権限が付与されているか確認する。
ls -l script.sh
実行権限がある場合は、x
が付与されている。
$ ls -l script.sh
-rwxr-xr-x 1 user user 0 Mar 10 11:25 script.sh
実行権限がない場合は、chmod
コマンドで実行権限を付与する。
chmod +x script.sh
所有者を確認する

実行権限に対し、所有者が正しいか確認する。
ls -l script.sh
所有者が正しくない場合は、chown
コマンドで所有者を変更する。
chown user script.sh
シバンを確認する

シバンが正しく設定されているか確認する。
head -n 1 script.sh
シバンが正しく設定されていない場合は、正しいシバンを設定する。
#!/bin/bash
ファイルの改行コードを確認する

ファイルの改行コードが正しいか確認する。
file script.sh
Linuxの改行コードはLF
、Windowsの改行コードはCRLF
である。よって、Windowsで作成したファイルをWSLで実行する場合はとくに注意が必要で、改行コードを変換する必要がある。
改行コードは、dos2unix
コマンドで変換できる。VS Codeの場合は、ファイルを開いて、右下の改行コードをクリックして変換することもできる。
dos2unix script.sh
ファイルの存在を確認する

ファイルが存在するか確認する。
ls script.sh
ファイルが存在しない場合は、ファイルを作成したり、移動したりする。
PATHを確認する

シェルスクリプトがコマンドとして認識されない場合は、PATHにスクリプトのディレクトリが含まれているか確認する。
echo $PATH
PATHにスクリプトのディレクトリが含まれていない場合は、export
コマンドでPATHにスクリプトのディレクトリを追加する。
export PATH=$PATH:/path/to/script