今日の一言【シェルプログラムを実行しているプログラム名を表示する】

2022年2月5日

実行コマンド

cat shellExecuteProgram.sh
/*===============================================================*/
#!/usr/bin/env sh
echo 現在実行しているシェルプログラム = ps -o command -p $(echo $$) | tail -1 | awk '{ printf %s %s %s を介して %s を実行しています。\n, $1, $2, $3, $4 }'
/*===============================================================*/

実行結果

./shellExecuteProgram.sh
/*===============================================================*/
現在実行しているシェルプログラム = sh を介して ./shellExecuteProgram.sh を実行しています。
/*===============================================================*/

実行コマンド

cat shellExecuteProgram.sh
/*===============================================================*/
#!/usr/bin/env bash
echo 現在実行しているシェルプログラム = ps -o command -p $(echo $$) | tail -1 | awk '{ printf %s %s %s を介して %s を実行しています。, $1, $2, $3, $4 }'
/*===============================================================*/

実行結果

./shellExecuteProgram.sh
/*===============================================================*/
現在実行しているシェルプログラム = bash を介して ./shellExecuteProgram.sh を実行しています。
/*===============================================================*/

プログラム冒頭にある下記シバンですがこのように書くことで各環境に惑わされずに目的の実行プログラムを呼び出すことができます。

!/usr/bin/env

!/usr/bin/env の後にスペースを空けて呼び出したいプログラム名を指定します。

bash や sh や zsh などのように・・・

bs