シェルスクリプト

Linux

目次一覧

 状態:-  閲覧数:968  投稿日:2017-02-23  更新日:2019-12-02  
シェルスクリプト / シェルスクリプトとは? / Windows環境との比較

シェルスクリプト1行目 /「/bin/sh」は「bash」のシンボリックリンク /「/bin/sh」と「/bin/bash」の違い

「bash」起動させる「shebang」記述の結論


シェルスクリプト / シェルスクリプトとは? / Windows環境との比較

 閲覧数:217 投稿日:2019-12-02 更新日:2019-12-02 

シェルスクリプト


英語表記
shell script

シェルスクリプトとは?


オペレーティングシステムのシェルまたはコマンドラインインタプリタ向けに書かれたスクリプト
・Linux上のコマンドを制御するプログラミング言語が記述されたファイル
・ファイル名は任意だが、拡張子は必ず .shにする
・また、改行コードは必ずLFで保存
※Windows のメモ帳では改行コードは CR+LF になってしまう

簡単に言うと?
Unixコマンドなどを順番に実行する

Windows環境との比較


比較一覧表
- Linux Windows
ファイル シェルスクリプト バッチファイル
ファイル拡張子 .sh .bat


シェルスクリプト1行目 /「/bin/sh」は「bash」のシンボリックリンク /「/bin/sh」と「/bin/bash」の違い

 閲覧数:274 投稿日:2019-12-02 更新日:2019-12-03 

シェルスクリプト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」記述の結論

 閲覧数:226 投稿日:2019-12-02 更新日:2019-12-02 

「bash」起動させる「shebang」記述の結論


bash特有の機能を使用したい時以外は、「/bin/bash」ではなく「/bin/sh」指定でbashを呼び出す方が無難
・移植性が高くなるから
※他の環境でシェルスクリプトを動作することが容易

/bin/sh と /bin/bash の違い
bash



シンボリックリンク

GNU

コメント投稿(ログインが必要)



週間人気ページランキング / 6-24 → 6-30
順位 ページタイトル抜粋 アクセス数
1 Flash Video | コンテナフォーマット | プログラミング用語 306
2 curl | HTTPクライアント(ネットワーク) | プログラミング用語 286
3 ルーター | ネットワーク | プログラミング用語 281
3 ユースケース | 開発 | プログラミング用語 281
4 ベクトル | 数学 | プログラミング用語 236
5 デーモン | Linux | プログラミング用語 227
6 正規表現 | プログラミング | プログラミング用語 194
7 YouTube | API | プログラミング用語 171
8 チェックアウト | バージョン管理システム(開発) | プログラミング用語 117
9 分かち書き | 形態素解析 | プログラミング用語 63
10 Linux | プログラミング用語 57
11 リバースエンジニアリング | 開発 | プログラミング用語 54
12 ネットワークアドレス | ネットワーク | プログラミング用語 50
13 PowerShell | スクリプト | プログラミング用語 44
14 クローラ | 検索エンジン | プログラミング用語 31
14 可搬性 | プログラミング | プログラミング用語 31
15 Subversion | バージョン管理システム(開発) | プログラミング用語 27
16 アンチパターン | プログラミング | プログラミング用語 11
17 プログラミング用語 9
18 deflate | ネットワーク | プログラミング用語 8
2022/7/1 1:01 更新