目次一覧
状態:-
閲覧数:1,486
投稿日:2017-02-23
更新日:2019-12-02
シェルスクリプト / シェルスクリプトとは? / Windows環境との比較
シェルスクリプト1行目 /「/bin/sh」は「bash」のシンボリックリンク /「/bin/sh」と「/bin/bash」の違い
「bash」起動させる「shebang」記述の結論
シェルスクリプト1行目 /「/bin/sh」は「bash」のシンボリックリンク /「/bin/sh」と「/bin/bash」の違い
「bash」起動させる「shebang」記述の結論
シェルスクリプト / シェルスクリプトとは? / Windows環境との比較
シェルスクリプト
英語表記
shell script
シェルスクリプトとは?
オペレーティングシステムのシェルまたはコマンドラインインタプリタ向けに書かれたスクリプト
・Linux上のコマンドを制御するプログラミング言語が記述されたファイル
・ファイル名は任意だが、拡張子は必ず .shにする
・また、改行コードは必ずLFで保存
※Windows のメモ帳では改行コードは CR+LF になってしまう
簡単に言うと?
Unixコマンドなどを順番に実行する
Windows環境との比較
比較一覧表
- | Linux | Windows |
---|---|---|
ファイル | シェルスクリプト | バッチファイル |
ファイル拡張子 | .sh | .bat |
シェルスクリプト1行目 /「/bin/sh」は「bash」のシンボリックリンク /「/bin/sh」と「/bin/bash」の違い
シェルスクリプト1行目
「実行時に使用するインタプリタ」を必ず指定する必要がある
shebang
#!で始まる1行目の記述をShebangと呼ぶ
※「"#"を用いた行」はそれ以降コメントアウトとみなされるが、「#!で始まる1行目」はそれとは異なり特別な意味を持つ
一般的には
#!/bin/shと書く
※Unix系の多くの環境で実行可能だから
「/bin/sh」は「bash」のシンボリックリンク
「/bin/sh」を実行する
→「/bin/bash」が実行される
※「/bin/bash」は「bash」シェルの本体ファイル
CentOS7環境で確認してみる
$ ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 9月 14 2016 /bin/sh -> bash
「/bin/sh」と「/bin/bash」の違い
何れを指定しても「bash」シェルとして実行されるが、
同じ「bash」シェルでも、起動経緯により、挙動は微妙に異なる
挙動の違い
エラー発生した時点で処理が止まるか最後まで進むか、など
sh という名前で bash を起動すると 、 sh の起動動作をできるだけ真似しようとする
$ man bash
sh という名前で bash を起動すると、 bash は古くからある sh の起動動作をできるだけ真似しようとします。また POSIX
標準にもできるだけ従おうとします。
「bash」起動させる「shebang」記述の結論
「bash」起動させる「shebang」記述の結論
bash特有の機能を使用したい時以外は、「/bin/bash」ではなく「/bin/sh」指定でbashを呼び出す方が無難
・移植性が高くなるから
※他の環境でシェルスクリプトを動作することが容易
・/bin/sh と /bin/bash の違い
・bash