MeWrite Docs

bash: command not found

Bashでコマンドが見つからない場合のエラー

概要

Bashシェルで実行しようとしたコマンドが見つからない場合に発生するエラーです。コマンドがインストールされていない、PATHが通っていない、権限の問題などが原因です。

エラーメッセージ

bash: npm: command not found
bash: docker: command not found
zsh: command not found: node
-bash: /usr/local/bin/xxx: No such file or directory

原因

  1. 未インストール: コマンドがインストールされていない
  2. PATHが通っていない: 実行ファイルのディレクトリがPATHにない
  3. 権限不足: 実行権限がない
  4. シェルの違い: bash/zsh/shで設定が異なる
  5. 新規インストール後: シェルを再起動していない
  6. タイプミス: コマンド名のスペルミス

解決策

1. コマンドのインストール確認

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# コマンドの場所を確認
which node
# または
command -v node
# または
type node

# コマンドが見つからない場合はインストール
# Ubuntu/Debian
sudo apt update && sudo apt install nodejs

# macOS (Homebrew)
brew install node

# CentOS/RHEL
sudo yum install nodejs

2. PATHの確認と設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 現在のPATHを確認
echo $PATH

# PATHを一時的に追加
export PATH=$PATH:/path/to/bin

# 永続的に追加(bash)
echo 'export PATH=$PATH:/path/to/bin' >> ~/.bashrc
source ~/.bashrc

# 永続的に追加(zsh)
echo 'export PATH=$PATH:/path/to/bin' >> ~/.zshrc
source ~/.zshrc

3. よくあるPATH設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# ~/.bashrc または ~/.zshrc

# Node.js (nvm)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

# Homebrew (M1 Mac)
export PATH="/opt/homebrew/bin:$PATH"

# Go
export PATH=$PATH:$(go env GOPATH)/bin

# Rust
export PATH="$HOME/.cargo/bin:$PATH"

# Python (pyenv)
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"

# ローカルのnode_modules
export PATH="./node_modules/.bin:$PATH"

4. 実行権限の確認

1
2
3
4
5
6
7
8
# 権限を確認
ls -la /path/to/script

# 実行権限を付与
chmod +x /path/to/script

# または直接実行
bash /path/to/script.sh

5. シェルの再読み込み

1
2
3
4
5
6
7
# 設定ファイルを再読み込み
source ~/.bashrc
# または
source ~/.zshrc

# または新しいシェルを開く
exec $SHELL

6. npm/npxコマンド

1
2
3
4
5
6
7
8
9
# npm グローバルコマンドが見つからない場合
npm config get prefix
# 出力されたパス/bin をPATHに追加

# npxを使用(パスを通さずに実行)
npx create-react-app my-app

# ローカルのnode_modulesから実行
./node_modules/.bin/eslint .

7. Docker コマンド

1
2
3
4
5
6
7
8
9
# Dockerがインストールされているか確認
docker --version

# サービスが起動しているか
sudo systemctl status docker

# ユーザーをdockerグループに追加
sudo usermod -aG docker $USER
# その後、ログアウト/ログイン

8. Pythonコマンド

1
2
3
4
5
6
7
8
9
# python vs python3
python3 --version

# エイリアスを設定
alias python=python3
alias pip=pip3

# または alternatives で設定(Linux)
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1

9. シェルスクリプトの先頭行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash
# または
#!/usr/bin/env bash

# Pythonスクリプト
#!/usr/bin/env python3

# スクリプト実行時にcommand not foundが出る場合
# 1. シェバンを確認
# 2. 改行コードを確認(Windows→Linuxの場合)
dos2unix script.sh

10. sudoでPATHが引き継がれない

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# sudoでPATHが変わる
sudo echo $PATH  # 通常のPATHが表示されるが...
sudo env | grep PATH  # sudoのPATHは異なる

# 解決策1: フルパスを使用
sudo /usr/local/bin/npm install -g package

# 解決策2: env を使用
sudo env "PATH=$PATH" npm install -g package

# 解決策3: visudoで設定
# Defaults secure_path に追加

11. crontabでcommand not found

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# crontabではPATHが限定的
# 方法1: フルパスを使用
* * * * * /usr/local/bin/node /path/to/script.js

# 方法2: PATHを設定
PATH=/usr/local/bin:/usr/bin:/bin
* * * * * node /path/to/script.js

# 方法3: スクリプト内でPATHを設定
#!/bin/bash
export PATH=/usr/local/bin:$PATH
node /path/to/script.js

12. デバッグ方法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# コマンドの検索
find / -name "npm" 2>/dev/null

# パッケージがインストールされているか
dpkg -l | grep nodejs  # Debian/Ubuntu
rpm -qa | grep nodejs  # CentOS/RHEL
brew list | grep node  # macOS

# シェルの種類を確認
echo $SHELL
echo $0

よくあるPATH設定

ツール一般的なパス
Homebrew (Intel Mac)/usr/local/bin
Homebrew (M1 Mac)/opt/homebrew/bin
npm global~/.npm-global/bin
Go~/go/bin
Rust~/.cargo/bin
Python (pyenv)~/.pyenv/shims

よくある間違い

  • .bashrcを編集したがsourceしていない
  • bash用の設定をzshで使おうとしている
  • sudoで実行するとPATHが変わることを知らない
  • パッケージマネージャーのインストール後にPATH設定を忘れる

関連エラー

参考リンク

Linux の他のエラー

最終更新: 2025-12-13