■ はじめに
Github Actions や CloudFormation などの インフラ系のサービスを扱う際に、Bashをよく使用しているが Shebang (シェバン)のところとかあいまいなことがあるので これを機にちゃんと調べてみた
目次
【1】Shebang 【2】効能 【3】構文 【4】オプション 1)-eオプション 2)-xオプション 3)-vオプション 4)-uオプション
【1】Shebang
* Linux等で実行されるシェルスクリプトにおいて 先頭についている「#!」を指す * 別名:hash bang / shell bang / sharp bang cf. Shebang (シェバン/シバン) ... 成り立ちや仕組み、全体の状況、〈米俗〉小屋、あばら家
【2】効能
* 実行時どのシェルでスクリプトを実行するかが決まる
# | Shebang | Explanations |
---|---|---|
1 | #!/bin/sh | Bourne shell (標準シェル) |
2 | #!/bin/sh | Bash |
3 | #!/usr/bin/env python3 | Python v3 |
【3】構文
#!インタプリタのファイルパス # <シェル内容>
例
#!/bin/sh
【4】オプション
* set コマンドについては、以下の関連記事を参照
setコマンド
https://dk521123.hatenablog.com/entry/2021/09/14/000000
1)-eオプション
* エラーで即中断する
指定例
#!/bin/bash -e or set -e
2)-xオプション
* シェルスクリプト内で実際に実行されたコマンドを表示する
指定例
#!/bin/bash -x or set -x
3)-vオプション
* シェルスクリプト内でこれから実行されるコマンドを表示する
指定例
#!/bin/bash -v or set -v
4)-uオプション
* 未定義の変数の参照をエラー
指定例
#!/bin/bash -u or set -u
参考文献
https://rcmdnk.com/blog/2016/09/20/computer-linux-bash/
https://qiita.com/mohira/items/566ca75d704072bcb26f
http://sechiro.hatenablog.com/entry/20120806/1344267619
https://qiita.com/yn-misaki/items/6fcfab082dd664f10d4e
https://eng-entrance.com/linux-shellscript-do
関連記事
シェル ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2014/10/23/005406
シェル ~ 環境変数 IFS ~
https://dk521123.hatenablog.com/entry/2024/01/24/234634
ファイルに関する処理あれこれ
https://dk521123.hatenablog.com/entry/2020/09/28/000000
setコマンド
https://dk521123.hatenablog.com/entry/2021/09/14/000000
Linux ~ ユーザに関わるコマンド ~
https://dk521123.hatenablog.com/entry/2016/06/26/233349
シェル ~ インストール済みかどうか調べる ~
https://dk521123.hatenablog.com/entry/2024/03/02/000000
ShellCheck ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/03/26/143803