ksh を使用して「該当するファイルはありません」と表示されますが、スクリプトは ksh -x を使用して実行されますか?

ksh を使用して「該当するファイルはありません」と表示されますが、スクリプトは ksh -x を使用して実行されますか?

OpenBSD 5.7/amd64でシェルスクリプトを実行しようとしています。 FOSSプロジェクトをテストするためのテストスクリプト。 (OpenBSDは基本的に古代のコンパイラを提供するので、私たちの目標の1つです。)

スクリプトを実行しようとすると、次のようになります。

$ ./cryptest.sh        
ksh: ./cryptest.sh: No such file or directory

しかし、-xデバッグのために追加すると、魔法のようにスクリプトを見つけることができます。

$ ksh -x ./cryptest.sh 
+ TEST_RESULTS=cryptest-result.txt
+ ADD_CXXFLAGS=
+ uname -s
+ grep -i -c darwin
+ IS_DARWIN=0
+ uname -s
+ grep -i -c linux
+ IS_LINUX=0
+ uname -s
+ grep -i -c cygwin
+ IS_CYGWIN=0
+ uname -s
+ grep -i -c mingw
+ IS_MINGW=0
+ [ -z  ]
+ [ 0 -ne 0 ]
+ [ 0 -ne 0 ]
+ [ 0 -ne 0 ]
+ [ 0 -ne 0 ]
+ -x c++ -dM -E -std=c++11 -
...

.zipを使用してZIPを解凍しました-aoq。所有権、権限などを確認しました。慎重に確認してみましたdos2unix。私もgo+rxそれを実行することを提案した。私が確認する必要があるすべてのもの(いくつか)は大丈夫だと思います。

何が起こっているのかを説明できる人はいますか?

答え1

シェルがcryptest.shの最初の行(shebang)で指定されたシェルを実行しようとしましたが、失敗しました。 kshを正しく見つけてスクリプトを実行できます。

答え2

kshファイルの最初の行のパスがkshシステムのパスと一致しません。

実際の状況を反映するようにファイルを編集すると、スクリプトが期待どおりに起動します。

答え3

Windows で開発する場合は、EOL エンコーディングで Unix EOL を使用してスクリプトを作成して保存する必要があります。

関連情報