ホームページ >バックエンド開発 >Python チュートリアル >シェルスクリプト実行時に「そのようなファイルまたはディレクトリがありません」という問題を解決する方法
悪いインタープリター:そのようなファイルやディレクトリが表示されない理由は、ファイル形式の問題です。このファイルは Windows で作成されました。改行メソッドはUnixとは異なりますが、vim上で設定しないと全く表示されません。
問題分析:
1. Windows で作成された SHELL ファイルを Linux に転送して実行すると、エラー メッセージが表示されます。
2. エラー メッセージ: 不正なインタープリター: そのようなファイルまたはディレクトリはありません。
問題の原因:
オペレーティングシステムはWindowsであり、スクリプトはWindows上で編集されているため、非表示の文字が存在する可能性があります。スクリプト ファイルは DOS 形式です
、つまり、各行の終わりは rn で識別され、その ASCII コードは 0x0D、0x0A です。
解決策:
ファイルが DOS 形式であるか UNIX であるかを確認する方法はたくさんあります。形式はまだ MAC 形式です
(1) vim ファイル名
次に、コマンド set ff
を使用して dos または unix という単語を確認します。実際に dos 形式である場合は、set ff=unix を使用して強制的に unix にします。フォーマットし、保存して終了した後に実行できます。
1. unix2dos または dos2unix という 2 つの小さなプログラムを使用して、さまざまなプラットフォームでテキスト ファイル形式を変換できます。djgpp では、これら 2 つのプログラムの名前は dtou と utod で、u は unix を表し、d は を表します。 dos
2 . sed などのツールを使用することもできます:
sed ‘s/^M//' filename > tmp_filename mv -f tmp_filename filename特記事項: ^M は、Shift + 6 を押して生成される ^ および文字 M ではありません。これは文字であり、その ASCII は 0x0D です。これを生成するには、最初に CTRL +V を押してから Enter (または CTRL+M) を押します
さらに、SHELL プログラムがコマンドが見つからないと報告する場合は、プログラムが使用する必要があるすべてのコマンドが PATH に含まれているかどうかを必ず確認してください。 (絶対パスは指定しません)) このような小さなプログラムであれば、一行ずつ確認することができます。
rreee
その後、何度か確認したところ、自分が書いた内容に何かが欠けていることがわかりました 最初の行を #!/bin/bash に変更する必要がありましたが、/ ああ、それは です。非常に単純な問題です。以前は見つかりませんでした。このようなエラーは確かにあります。シェル スクリプトは確かに使いやすいですが、唯一の問題は、形式要件が高すぎることです。「そのようなエラーはありません」という問題のその他の解決策については、ファイルまたはディレクトリ」をシェル スクリプトで実行する場合は、PHP 中国語 Web サイトの関連記事に注目してください。