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 を使用してスクリプトを作成して保存する必要があります。