web-dev-qa-db-ja.com

bashターミナルがシェルのコマンドを認識しないのはなぜですか?

一部のユーザーのリクエストに応じて、ユーザーがソリューションをより適切に説明できるように、すべての中間ステップと結果を最初の投稿に追加することにしました。これは、質問の下の見出しAdditionsの下に追加されます。以下Additions、というセクションがあり、「決議」に追加の手順を追加しています。この問題を解決します。

質問:

今日、コマンドラインシェルでコードを実行し続けようとしたところ、Fedora 21(i686上のカーネル4.1.13-100.fc21.i686(tty2 ))。システムを再起動して再起動すれば、問題は解決するはずです。しかし、驚いたことに、ログイン後にシステムが起動していないことに気付きました。画面が黒くなったときにCTRL + ALT + F2を押して実際に機能しなくなった場所を確認して、診断を試みました。完全に止まった最後の行はこう言っていました:

プリマスの起動画面が終了するまで待ちます

次のように言って、シェルの診断モードで実際にコマンドが受け入れられない場合に、このような問題を修正する方法を教えてもらえますか?

-bash:<...>:コマンドが見つかりません

私が考えることができる唯一のことは、私が気付かなかった、または.bashrcをめちゃくちゃにしていないいくつかの可能な自動更新です(次のコマンドを使用しても、その中を見ることができなくなります:)。

Sudo gedit ~/.bashrc


追加:

診断モードに入った後、Ctrl+Alt+F2を押してシステムにログインできた直後再起動して、通常の状態では失敗するメインスタートアップにログインしました。

Fedoraリリース21(Twenty One)
i686上のカーネル4.1.13-100.fc21.i686 + PAEdebug(tty2)

このモードでは、ログインプロンプトが表示されます

localhostログイン:

ユーザー名を入力すると、次のように表示されます。

パスワード:

パスワードを入力すると、次のように表示されます。

最終ログイン:tty2の水3月30日15:33:54

[bbenjamin @ localhost〜] $

ここでは、どのコマンドもシェルに認識されません。そして、エラーメッセージは通常:

-bash:<...>:コマンドが見つかりません

ここで、<...>は基本的にanyコマンドです。ほとんどのコマンドをシェルで実現するのに成功したのは、次のコードを実行したときだけです(回答で述べたように)。

PATH=/usr/bin:/usr/sbin

その後、少なくともファイルとフォルダとプログラムを探して見ることができました(ほとんどのコマンドが実現されているため)。

ただし、診断モードでは不可能であるFedoraのすべてのグラフィックスやその他の機能を利用できるように、通常どおりにログを記録する必要があります。特にこれを可能にするには、.bashrcファイルを開いてその問題を完全に修正する必要があります(なんとかして元のバージョンにアクセスできると仮定します)。これを行うには、次のようなコマンドを実行する必要があります。

(Sudo) gedit ~/.bashrc

ただし、次のようなエラーメッセージが表示されます。

サーバーを初期化できません:接続できませんでした:接続が拒否されました

(gedit:1397):Gtk-WARNING **:ディスプレイを開けません:

または、次のようなコマンドを実行します。

~/.bash_profile

エラーメッセージが表示されます。

bash:/home/bbenjamin/.bash_profile:権限が拒否されました。

今、答えから学び、この後者のコマンドは実行可能ではないため、実行することは想定されていません。代わりに、次の形式で実行する必要があります。

source ~/.bashrc

その後はどうすればいいのか分かりません。

ただし、前のコマンド(Sudo) gedit ~/.bashrcが機能しない理由もわかりません。私はいつも、必要に応じて.bashrcファイルを少し変更していたことを覚えています。今回、どのように変更したかはわかりませんが、ここで説明されているすべての問題が発生しました。だから今、私の質問は、.bashrcを開いてその中を見て必要な変更を加えることができるコマンドラインベースの方法があるかどうかです永久に私のシステムログインが適切に私を導くFedoraのすべての機能を確認して利用する通常のグラフィカルモード。


解像度

ログインに失敗した直後にCtrl+Alt+F2コマンドを使用してdiagnosticモードになったら、混乱したファイルを一時的に修正できることを学びましたPATH=/usr/bin:/usr/sbinコマンドを実行して.bashrc。次に、コマンドラインcat .bashrcを実行して、。bahsrcファイル内を確認します。そのとき初めて、ファイルにいくつかのパスが追加されたファイルの内容を確認しました。追加したファイルの記録を前のパスの最後に時系列で保存していたので、問題のあるパスが最後のパスであることがわかりました。今、問題を修正するために、実際にファイルを変更する必要がありました。これはコマンドラインnano .bashrcによって実現されました。その後、新しいページが表示され、その前にを追加することで問題のある行をコメントアウトする機会がありました。最後に、変更を保存して終了しました。最後に、コマンドラインtelinit 6を使用して、変更された新しい。bashrcファイルを使用してシステムを再起動し、その後、ロギングが成功したことを確認しました。

3
Benjamin

~/.bashrcに何かを入れているようです。これにより、ほとんどのプログラムが実際に存在する/usr/binを含まない方法でPATHが設定されます。これを実行すると:

PATH=/usr/bin:/usr/sbin

ほとんどのコマンドが機能し始めるはずです—その後、~/.bashrcを編集して、PATHをリセットしている箇所を修正できます。 (そして、実際には— ~/.bash_profileではなく~/.bashrcPATHを設定したい—参照 PATHへのパスを正しく追加する方法

(ちなみに、更新によってホームディレクトリ内のファイルが変更されることはないため、Fedoraの更新によってこれが混乱することはありません。更新されたソフトウェアを実行すると、そのソフトウェアが独自の構成ファイルを更新する場合がありますが、これは適用されません。 〜/ .bashrc。)


編集時:geditテキストエディターはグラフィカルモードでのみ機能します。テキストモードでは、テキストベースのエディターが必要です。これらの中で最も簡単なのは、おそらくnanoです。でインストール

dnfインストールnano

nanoの場合は、代わりにgeditを使用します。実際の編集機能は少し異なりますが、非常に簡単です。

5
mattdm