ハッシュバンを変更してスクリプトタイプを自動的に検出する方法

ハッシュバンを変更してスクリプトタイプを自動的に検出する方法

次のスクリプトがあります。

 1 #!/usr/bin/env sh
 2 #calculate number of tests we will run
 3 lines="$(cat /etc/crontabs/root|wc -l)"
 4 tests="$(($lines - 2))"
 5
 6 echo "1..$tests"
 7 counter=1
 8 etc.... does other stuff

最初の行では、開始するために「sh」を入力する必要がないようにコーディングしようとしています。以前は、hashbangは次のようになりました。

#!/bin/sh

コードは機能しますが、実行するために使用するexeを教えてください。

今、あなたがどのタイプのスクリプトであるかを知る必要がないように変更したいと思います。スクリプトを実行しようとすると、次のエラーが発生するため、何かが間違っているようです。

lab-1:/tmp# crontab_test       
-ash: crontab_test: not found

どこで迷子になったのか教えてもらえますか?

答え1

ハッシュバンパスがよさそうです。

スクリプトは/tmpディレクトリにありますか?

この/tmpディレクトリは(通常)ディレクトリにないため、$PATHコマンドラインで指定する必要があります。./現在のディレクトリを使用できます。

./crontab_test

一部のシステムには現在ディレクトリが.ありますが$PATH、これはセキュリティの観点からやや疑わしいと見なされます。

関連情報