Linuxサーバーでコマンドが実行できない!?
XSERVERにSSHログインした際など、Linuxサーバーを触っていたら ls
や vi
のようなテキストによるコマンドをよく使う。
しかしあるとき以下のエラーが出てコマンドが実行できなくなったことはないだろうか。
bash: ls: コマンドが見つかりません
原因は何なのか。
原因を調べようにも ls
さえ実行できないのにどうやって調べれば良いのか。
そこで今回はLinuxの「ls: コマンドが見つかりません」の原因と直し方について解説する。
この記事を書いている人
記事を読むメリット
「ls: コマンドが見つかりません」の原因と直し方がわかる
「ls: コマンドが見つかりません」の原因
「ls: コマンドが見つかりません」の原因はPATH(パス)の設定が壊れているから。
PATHの設定が壊れているのでコマンドを入力しても、コマンドの実体があるディレクトリがわからずに「見つかりません」となってしまっている。
というわけで絶対パスでコマンドを打てば実行できる。
コマンドは環境によりけりだが、XSERVER(エックスサーバー)なら /usr/bin/ls
で ls
コマンドを実行できる。
エラーの解決方法
原因はわかったがどのように解決すればよいのか。
まずPATHの設定は ~/.bash_profile
もしくは ~/.bash_profile
に書かれている。
(デフォルトのシェルがbashであれば)
なので中身を見て編集する。
編集するには以下のコマンドを実行する。
/usr/bin/vi ~/.bash_profile
筆者が同じエラーに遭遇した際に ~/.bash_profile
の中を見たら以下のようになっていた。
原因は赤枠の部分。
PATH=$PATH:$HOME/bin export PATHeval $(/home/xxxx/.linuxbrew/bin/brew shellenv)
ココは本来以下のように export PATH
と eval
の間に改行が入っていなければならない。
(linuxbrewの設定時にミスをしたものと思われる。)
PATH=$PATH:$HOME/bin export PATH eval $(/home/xxxx/.linuxbrew/bin/brew shellenv)
なので修正して再度SSH接続をしなおせば、「コマンドが見つかりません」のエラーは解消するはずだ。
まとめ
今回はLinuxの「ls: コマンドが見つかりません」の原因と直し方について解説した。
「コマンドが見つかりません」の原因はPATHの設定が壊れているから。
この状態でコマンドを使うには /usr/bin/ls
のように絶対パスで指定すれば良い。
エラーを修正するには ~/.bash_profile
もしくは ~/.bash_profile
を /usr/bin/vi
で開いてPATH周りの記述を修正してSSH接続しなおすと直る。
WEB系に関わるエンジニアにはLinuxの知識は必須。
GCP、AWS、OracleVM、XSERVER、どれもサーバーはLinuxで動いている。
覚えておいて損は無いだろう。
関連する記事として、もしWordPressブログをXSERVER(エックスサーバー)に移行したいのであれば比較記事や移行記事があるので参考にして欲しい。