Shebangライン "$SHELLで実行"

Shebangライン

my_zsh_script.sh「シャバンライン」に塗ると同じ効果が得られるものを探していますが、持ち運べる、ように

$SHELL my_zsh_script.sh

IOW、これは有効な対応する項目を探しています。

#!$SHELL

または

#!/usr/bin/env $SHELL    

(一部のシステムでは、私の値は$SHELLバージョンであり、zsh場合によっては#!/usr/bin/env zsh解析された値とは異なります。)

my_zsh_script.sh私は常にカスタムをソートし、実行したい各ホストに対して正しいShebangラインをハードコーディングできると思います。私はこれを避けることを願っています。

ベストアンサー1

#!/bin/sh
my_script(){
    { cat; cat <&3; }>"$0"
} <<SHEBANG 3<<\SCRIPT
#!${SHELL}
SHEBANG
#now all the rest of your script

#goes in here

SCRIPT

my_script

ほとんどのシェルはこの文書の内容全体を安全な一時ファイルに自動的に保存します。パイプを使用しないバッファは通常シェルスクリプトの書き込みに対応するのに十分な大きさですが、もちろんわかりません。

関数はシェルメモリに格納されたリテラル文字列です。上記の操作は一度だけ行う必要があり、その後、スクリプトを$SHELL実行したときに出てくるすべての内容に基づいてスクリプトが解釈されます。

おすすめ記事