「No uch file or directory」エラー完全対策ガイド:環境別の原因とトラブル解決法
コマンドを叩いた瞬間に「No such file or directory」と表示されるたび、心当たりがなくて戸惑った経験はないでしょうか——このエラーは単なるファイルの不在だけでなく、パスの解釈ミスや実行権限の不足、シェバングの誤りなど、さまざまな原因が潜んでおり、本ガイドではPythonやLinux/Ubuntu、Bash/Zsh、Blender、SCP、gradlewなど環境別に具体的な対処手順を体系的に解説します。
エラーコード: ENOENT (errno 2) ·
主な発生環境: Python, Linux, macOS, Blender, SCP ·
典型的な原因の数: 5~7種類 ·
対応手法の数: 10以上
- ファイルが存在するか
lsで確認する。 - 相対パスと絶対パスの違いを理解し、
pwdで現在ディレクトリを確認する。 - 実行権限を
chmod +xで付与する。 - シェバング行が正しいインタプリタを指しているか確認する。
- 改行コードがCRLFでないか
dos2unixで変換する。 - 動的リンクライブラリを
lddで確認する。
以下の表はエラーの主要な仕様をまとめたものです。
| 項目 | 詳細 |
|---|---|
| エラーコード | ENOENT (Error NO ENTry, errno 2) |
| 主な原因カテゴリ | ファイル不在、パス誤り、権限不足、インタプリタ不一致 |
| 対応OS | Linux, macOS, Windows Subsystem for Linux |
| 関連ツール | Python, Blender, SCP, Gradle, Bash, Zsh |
Pythonで「No such file or directory」エラーが発生する原因と解決方法は?
Pythonでスクリプトを動かすときにこのエラーに遭遇するケースは非常によくあります。原因の多くは、スクリプトが参照するファイルのパス指定の誤りです。CodeCamp Trendsの解説によれば、作業ディレクトリと相対パスの不一致が原因であることが多いと言います。
Pythonスクリプト実行時のパス指定の誤り
open()関数でファイルを開く際、存在しないパスを指定していないか確認する- ファイルが存在する場合でも、作業ディレクトリが異なれば相対パスは無効になる(CodeCamp Trends(技術学習メディア))
相対パスと絶対パスの違い
- 相対パスは実行位置に依存するため、絶対パスを使うことで環境差による失敗を減らせる(CodeCamp Trends(技術学習メディア))
os.getcwd()でカレントディレクトリを確認する
os.path.exists() を使った事前確認
- ファイルを開く前に
os.path.exists()で存在確認を行う - 存在しない場合は
FileNotFoundErrorをキャッチして適切に処理する
Pythonでこのエラーが発生したら、まず os.getcwd() で現在の作業ディレクトリを出力し、指定した相対パスが正しいかを確認しましょう。この一手間で多くの時間を節約できます。
この環境での教訓は、作業ディレクトリの認識を常に最新に保つことです。シンプルな確認が、複雑なデバッグの入り口になります。
「ファイルが存在するのにエラーが出る場合、ldd で依存ライブラリを確認してください。」
— StackOverflow 回答者
Linux/Ubuntuでファイルが存在するのに「No such file or directory」エラーが出るのはなぜ?
ファイルがディレクトリに存在するのにエラーが出る——この不可解な状況は、Linux/Ubuntuユーザーを悩ませる典型的なパターンです。
32ビットバイナリを64ビット環境で実行
fileコマンドでバイナリのアーキテクチャを確認する(例:file /path/to/binary)- 32ビットバイナリには32ビットの互換ライブラリが必要
動的リンクライブラリ不足
lddで不足している共有ライブラリを調べる(LabExのLinuxチュートリアル)- ライブラリが見つからない場合、
aptやyumでインストールする
実行権限がない場合
chmod +xで実行権限を付与するls -laでパーミッションを確認する(LabEx(プログラミング学習プラットフォーム))
ファイルが存在するのにエラーが出る場合、ldd で依存ライブラリを確認してください。多くの場合、不足している共有ライブラリが原因です。
この状況の本質は、OSのカーネルとユーザー空間の間に潜むミスマッチにあります。バイナリが要求する環境と実際の実行環境の差異を、file と ldd という2つのコマンドで可視化できるのです。
「ENOENTは ‘Error NO ENTry’ の略で、エラーコード2です。」
— Unix StackExchange (2025)
BashやZshでスクリプト実行時に「No such file or directory」エラーを直すには?
シェルスクリプトを実行するときにこのエラーが表示される場合、スクリプトそのものの問題であることが多いです。
シェバング行の間違い
- shebang に正しいインタプリタのパスを指定する(例:
#!/bin/bash) - 間違ったパス(例:
#!/bin/bashの代わりに#!/usr/bin/bash)を避ける
行末の改行コードがCRLFになっている
dos2unixで改行コードを変換するfileコマンドで改行コードの種類を確認できる
./ を付けずに実行
- カレントディレクトリのスクリプトを実行するには
./script.shと指定する必要がある - 単に
script.shと入力すると、PATH内のコマンドを検索して見つからない
Windowsで作成したスクリプトをそのままLinuxやmacOSに持っていくと、改行コードがCRLFのままでシェバングが正しく解釈されず「bad interpreter」エラーが発生します。dos2unix で変換してください。
シェルスクリプトの実行エラーは、環境の違い(Windows⇄Unix)やパスの指定漏れといった「初歩的だが気づきにくい」問題に起因します。
Blenderで「No such file or directory」エラーを修正する手順は?
3DCG制作で欠かせないBlenderでも、このエラーに遭遇することがあります。主に外部データのリンク切れが原因です。
Blenderのプロジェクトファイルが移動した
- File → External Data → Find Missing Files でリンク切れを検索する
- プロジェクトフォルダごと移動した場合、テクスチャやサウンドファイルのパスが変わることがある
外部データのリンク切れ
- テクスチャ画像やサウンドファイルが存在しない場合、エラーが発生する
- パック済みデータの場合は問題ないが、外部リンクの場合は注意が必要
アドオンが参照するファイルパスの確認
- アドオンが特定の設定ファイルやライブラリを必要とする場合がある
- アドオンの設定画面でパスが正しいか確認する
Blenderの場合は、ファイル管理の方法そのものが問われます。外部参照ファイルをプロジェクトフォルダにまとめておく習慣が、こうしたエラーを未然に防ぎます。
SCPコマンドで「stat remote: No such file or directory」と表示される原因は?
リモートサーバーへのファイル転送中にこのエラーが出ると、ネットワーク障害かと心配になりますが、多くの場合は単純なパス指定の間違いです。
リモートパスの存在確認
scpの構文:scp [オプション] ユーザー@ホスト:パス ローカルパス- リモート側のディレクトリが存在するか
sshでlsを使って確認する
絶対パスと相対パスの違い
- リモート側でも相対パスはホームディレクトリからの解釈になる
- 絶対パス(
/home/user/data/など)を指定すると確実
SSH接続設定の問題
~/.ssh/configの設定でホスト名やポートが正しいか確認する- 接続自体ができているか
sshでテストする
SCPのエラーは、リモート環境とローカル環境の「間」にある問題です。リモートのディレクトリ構造を事前に ssh で確認するという基本が、最も確実な対処法です。
「cd で移動しようとしたフォルダが存在しないか、パスにタイプミスがあります。」
— AskUbuntu ユーザー
gradlew実行時に「bad interpreter: No such file or directory」エラーを解決する方法は?
Gradleベースのプロジェクトでよく見られるこのエラーは、主にクロスプラットフォーム開発時のファイル形式の問題です。
gradlew ファイルの改行コードをLFに変更
sed -i 's/\r$//' gradlewで改行コードを修正する- Windows環境でcloneしたファイルがCRLFになっていることが多い
Javaがインストールされていない
java -versionでJavaの存在を確認する- インストールされていない場合はJDKをインストールする
実行権限がない
chmod +x gradlewで実行権限を付与する- 他のスクリプトと同様、権限不足で「No such file or directory」に見えるエラーが発生する
Gradleプロジェクトでは、gradle wrapper コマンドでgradlewファイルを再生成する方法もあります。これにより、改行コードが正しい状態で出力されます。
gradlewのエラーは、開発環境の「端っこ」にある小さな違い——改行コードと実行権限——に集約されます。この2つをチェックするだけで、大半の問題は解決します。
メリット
- 体系的に原因を切り分けられるため、再発を防げる
- 各環境に特化した対処法が明確
- 公式ドキュメントや信頼できる情報源に基づいている
デメリット
- 複数の原因が重なると診断に時間がかかる
- 環境によっては非標準的な設定が必要
Related reading: No such file or directory エラー:意味、原因、環境別の完全解決ガイド
mebee.info, se.cite.ehime-u.ac.jp, simpledancer.hatenablog.com, youtube.com, qiita.com
よくある質問(FAQ)
「No such file or directory」エラーはどのような意味ですか?
指定したファイルまたはディレクトリがシステム上に見つからないことを示します。エラーコードENOENT(Error NO ENTry)として知られ、errno 2に対応します。
ENOENTとは何ですか? なぜエラーコード2と呼ばれるのですか?
ENOENTは「Error NO ENTry」の略で、ファイルやディレクトリが存在しない場合にOSが返すエラーコードです。エラー番号2はUnix系OSで伝統的に使われている値です。
ファイルが存在するのにエラーが出る場合、最初に確認すべきことは?
まず file コマンドでバイナリのアーキテクチャを確認し、次に ldd で動的リンクライブラリを確認します。実行権限も確認してください。
実行権限がないとこのエラーは発生しますか?
はい、実行権限がない場合も同様のエラーが発生することがあります。chmod +x で権限を付与してください。
パスに日本語やスペースが含まれているとエラーになりますか?
はい、パスにスペースが含まれる場合は引用符で囲むかエスケープする必要があります。日本語が含まれる場合も同様に扱ってください。
シンボリックリンクが原因でエラーになることはありますか?
シンボリックリンクが切れている場合や、リンク先のファイルが存在しない場合にエラーが発生します。readlink でリンク先を確認してください。
Blenderでエラーが出たとき、外部データのリンクを確認する方法は?
Blenderのメニューから「File」→「External Data」→「Find Missing Files」を選択してリンク切れを検索できます。