確認
現在のシェル
echo $SHELL
1 2 |
[vagrant@localhost laravel]$ echo $SHELL /bin/bash |
使用可能なシェル
cat /etc/shells
1 2 3 4 5 |
[vagrant@localhost laravel]$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash |
bashへのリンク
多くのLinuxでは、/bin/shはそのままのsh(Bourne Shell)ではなく、bashへのシンボリックリンクになっている。
1 2 |
[vagrant@localhost test]$ ls -l /usr/bin/sh lrwxrwxrwx. 1 root root 4 5月 13 2020 /usr/bin/sh -> bash |
スクリプトの書き方と実行
1行目にShebang
スクリプトの1行目で実行するシェルを指定する。この1行目の表現はShebangと呼ばれる。
#!/bin/bash
1 2 3 |
#!/bin/bash echo 'Hello.' echo 'Nice to see you.' |
実行権限を与える
普通にスクリプトを作成した場合、実行権限がない。
1 2 3 4 5 |
vagrant@localhost shell]$ ls -al 合計 4 drwxrwxr-x. 2 vagrant vagrant 21 6月 30 06:19 . drwxrwxr-x. 3 vagrant vagrant 50 6月 30 06:19 .. -rw-rw-r--. 1 vagrant vagrant 49 6月 30 06:19 test.sh |
chmod
で実行権限を与える。全ユーザーで実行可能にするなら755を指定。
chmod 755 スクリプト名
1 2 3 4 5 6 |
[vagrant@localhost shell]$ chmod 755 test.sh [vagrant@localhost shell]$ ls -al 合計 4 drwxrwxr-x. 2 vagrant vagrant 21 6月 30 06:19 . drwxrwxr-x. 3 vagrant vagrant 50 6月 30 06:19 .. -rwxr-xr-x. 1 vagrant vagrant 49 6月 30 06:19 test.sh |
パスを指定して実行する
スクリプトの場所にパスが通っていない場合は、カレントディレクトリーからのパスで指定して実行。
./スクリプト名
1 2 3 |
[vagrant@localhost shell]$ ./test.sh Hello. Nice to see you. |
フルパスでもよい。
1 2 3 |
[vagrant@localhost shell]$ /home/vagrant/test/shell/test.sh Hello Nice to see you |
スクリプトがパスが通っている場所にあるなら、スクリプト名だけで実行可能。
1 2 3 4 |
[vagrant@localhost test]$ sudo cp test.sh /bin [vagrant@localhost test]$ test.sh Hello. Nice to see you. |