.bash_profileを変更した後、すべてのコマンドが「command not found」で失敗しますか?


46

私は.bash_profileを更新していましたが、幸いにもいくつかの更新を行ったところ、次のようになりました:

env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
-bash: tar: command not found
-bash: grep: command not found
-bash: cat: command not found
-bash: find: command not found
-bash: dirname: command not found
-bash: /preexec.sh.lib: No such file or directory
-bash: preexec_install: command not found
-bash: sed: command not found
-bash: git: command not found

私のbash_profileは実際に他の.shファイルを取り込む(ソースする)ので、どの変更がこれを引き起こしたのか正確にはわかりません。

今私がファイルのリストを試してみると、私は得る:

>ls
-bash: ls: command not found
-bash: sed: command not found
-bash: git: command not found

エラーの原因を追跡する方法、およびファイルをリストするなどの基本的なことのために端末を使用する方法に関するヒントはありますか?


/ bin / lsのようにフルパスを使用するとどうなりますか?また、どのような変更を加えましたか?
KPマクレガー

2
はい、.bash_profileを貼り付けます

/ binに/ lsのリストファイルを、しかし、その後、私はそれ以下のこれらの2行を参照してください-bash: sed: command not found -bash: git: command not found
Blankman

場合は、あなたの問題がでました/etc/environment(CentOSの6中)次のコマンドを使用し、:ssh -t root@<server-ip> "/bin/bash -c '/bin/mv /etc/environment /tmp/'"
Edenshaw

回答:


65

ある時点で、デフォルトのPATH環境変数を上書きしているように見えます。発生したエラーのタイプは、上記のコマンド(を含む)が存在するをPATH含まないことを示します。/binbash

たとえば、次の場合

PATH=/home/user/bin

の代わりに

PATH="$PATH":/home/user/bin

私は、ある時点でこれを行うました:export PATH=PATH:EC2_HOME/bin
Blankman

2
あなたは、第二のPATH文字列に「$」を使用する必要があります- export PATH=$PATH:EC2_HOME/bin
Manula Waidyanatha

$ EC2_HOME / binに/ EC2-説明-領域Iは....また、ソースのリロードをした:それは私のパスにあるにもかかわらず、まだこの作品どのように「EC2-説明-地域の仕事をしない、奇妙な
Blankman

2
見て、私たちはあなたが何をしているのか、あなたが調達している他のファイル、それらの中に何があるのか​​分からない。そして、はい、ファイルをソースするたびに、パスに物を追加します(通常、.bash_profileは一度だけ読み取られるため、これは問題ありません)。1つずつ確認して、何が起こるかを確認してください。また、EC2_HOMEは変数ではありませんか?yesの場合、あなたがそれを先行すべき$このように:export PATH=$PATH:$EC2_HOME/bin
1月

1
私はその問題にstuckedとどのくらいの時間、この答えは私をたくさん助けたどのくらいの時間のI失う数
Herrgott

21

bashスクリプトのデバッグを開始する1つの方法は、-xオプションでサブシェルを開始することです。

$ bash --login -x

これにより、シェルの起動時に実行されるすべてのコマンドとその引数が表示されます。

.bash_profileはログインシェルによって読み取られるため、-loginオプションが指定されています。bashスクリプトのデバッグの詳細については、http//tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.htmlを参照してください。

最終的には、1月の提案はあなたにとってはうまくいくと思いますが、そのリンクは将来の問題について読む価値があります。


-bash:bash:コマンドが見つかりません
Yassine Qoraiche

10

問題が見つかった可能性があります。それは私のために働いた、そしてあなたのために働くかもしれない...

私はデフォルトでエディターをWindows(LF / CR)に保存していました。私は両方のシステムを使用しているので、論理的に思えました。をいじる必要があるとき.bash_profile、コメントアウトして、何も機能しないことを試してみました。保存をOS X形式(CRのみ)に変更しました。ターミナルにこれ以上「コマンドが見つかりません」!

とても簡単かもしれません!


私を夢中にさせた非常に微妙なこと。この回答を追加していただきありがとうございます!
samuel.molinski

これは私が経験していたことでした!ありがとう。クイックヒントは、あなたのUNIX環境でファイルを変換するには、このコマンドを使用している:$ dos2unix .bash_profile
melwil

それがあなたがしたことだと確信していますか?OS XはUnixであるため、キャリッジリターン(CR)ではなく、単一の改行(LF)文字でUnixスタイルの行末を使用します。後者を使用した唯一の一般的なオペレーティングシステムはOS 9以前であり、Linux / Ubuntuアプリケーションはそれによってかなり混乱します。
デビッドフォースター

6

再実行できなかった後。〜/ .bash_profileまたはwhoami、grepなどの通常のコマンド。必要なパスを再エクスポートする方法を考えました。

export PATH=/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/cpanel/composer/bin:/usr/local/easy/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin

これはほとんどのシステムで機能するはずですが、これらのパスの一部はすべてのLinuxパッケージに存在するわけではありません。それは私のために働いた。


4

あなたがそうでなければ、同様の問題を抱えている他の人のために、私は問題の答えを見つけたかもしれないと思います。これに対する私の答えは、私が持っていないということです.bash_profile

だから私はウェブ全体を検索していて、解決策を見つけました。これは基本的にターミナルを開き、を入力してtouch ~/.bash_profileを押しEnterます。それは私の問題を修正しました。それがあなたのために同じことを願っています


8
LOL ... -bash:touch:コマンドが見つかりません
Kumar KL

2

私はあなたと同じ問題を抱えています。私は(多くの一般的なコマンドを使用することはできませんlsvi/vim..)と編集することはできません/root/.bashrc私がログインしたときにsuルートに。

最後に。この問題の解決策を見つけました。次のコマンドでルートにログインするだけです:

su -m

その後、使用できます

vim /root/.bashrc

PATHを編集します。

幸運を!


2

同じ問題がありました。PATHのエクスポート中に$を忘れた可能性があります。TextEditで.bash_profileを開く必要があります。ディレクトリでファイルが見つからない場合は、Command + Shift +>を押して隠しファイルを表示します。

次に、PATHを修正して保存します。

ターミナルのディレクトリで、source .bash_profileと入力します。

これで問題が解決するはずです。


それが私の問題を解決してくれてありがとう、ついに私はbash_profileファイルを編集することができました。
Touseef Murtaza

1

私はまったく同じ問題を抱えていました:

lxterminalに入れた場合:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash/

tty2でまったく同じコマンドを入力すると、次のようになります。

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash\r

\ rはDOSの行末を意味するので、ファイルを開い~/.bashrcてKrusaderの行末をUNIXスタイルに変更します。そして、すでに機能しています!!! :-)

DOS EOLは、bashスクリプトでも散発的な問題を引き起こします。


1

を変更した直後に同じ問題が発生しました.bash_profile。それを元に戻したいのですが、すべてのコマンド、特にnanoコマンドとvimコマンドを失い、コマンドで.bash_profileを開けないため、今はできません。これ.bash_profileは隠しファイルで、Finderで開くことができません。

そのため、.bash_profileファイルを開く方法を見つける必要があります。Atomはプロジェクトフォルダー内のすべてのファイルを読み取ることができ、隠しファイルを含めることができるため、 多くの方法を試した後、Atomを使用できることがわかりました。Atomを開いて、を選択しFile -> Open<yourusername>フォルダーを選択すると、すべての隠しファイルがAtomのツリービューに表示されます.bash_profile。最後の変更を削除してターミナルを再度開いた後、すべてのコマンドが戻ってきました!:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.