何が起こっているのかわかりません。
スクリプトを呼び出しましょうa.sh
以下を使用
/users/guru$ cat a.sh
#! /usr/bin/ksh
echo "Hello"
date
ksh
で実行します。それが行われます。
/users/guru$ ksh a.sh
Hello
Tue Jul 15 15:00:52 EDT 2014
ファイルの権限とksh
パスを確認してください。
/users/guru$ ls -l a.sh
-rwxrwxrwx 1 guru kpc 35 Jul 15 15:00 a.sh
/users/guru$ a.sh
ksh: a.sh: not found
/users/guru$ which ksh
/usr/bin/ksh
「./a.sh」を実行してみてください。ファイルがどこにあるかを知る必要があります。
「./」は、現在のディレクトリを検索するように指示します。
コマンドを入力すると、シェルはPATH
変数で指定されたディレクトリのリストからコマンドを検索します。
現在のディレクトリは(セキュリティ上の理由から)デフォルトではPATH
にないため、シェルはスクリプトを見つけることができません。
現在のディレクトリを意味する./
を使用して、シェルがスクリプトの場所を認識できるようにします。
他の質問で投稿したように、スクリプトを./scriptname
として実行しても、ファイルが見つからないというエラーが発生する場合があります。私が他の answer に投稿したように、あなたのマシンでそれをテストすることができます。
テスト
cat ksh_experiment.ksh
#!/usr/bin/ksh
echo "Hello"
これで、ファイルを実行したときに権限を提供した後、出力が正常に生成されました。 ここ で説明したように、ファイルに改行を挿入しました。スクリプトを実行すると、次のような出力が得られました。
ksh: ./ksh_experiment.ksh: not found [No such file or directory]
現在、cat -v ksh_experiment.ksh
も同じ出力を生成しました。また、vim ksh_experiment.ksh
と入力すると、新しいファイルが開かれていました。
私が提供したリンクの回答で説明したように、コマンドを使用してキャリッジリターンを削除しました。
Perl -p -i -e "s/\r//g" ksh_experiment.ksh
実行時に修正した後、期待どおりの出力が得られました。
これで、dos2unix
を使用してファイルを変換することができます。