どのようにしてbashプロンプトをデバッグできますか?

私は .bashrc ファイルと他のinitファイルを編集していましたが、プロンプトでいくつかのエラーを引き起こしているコードスニペットを2つ残しているようです。しかし私はそれらを見つけることができません。

どのように私は不注意にハッキングしたinitスクリプトを見つけるためにプロンプ​​トをデバッグするのですか?

6
実用的なレベルでは、すばやくできることの1つは、マシンにダミーユーザーを追加し、そのアカウントで作成されたファイルと自分のものとを比較することです。より洗練された計画は、デフォルトがどこから来ているのか把握し、それらとの差異を調べることです。もちろん、システム全体のファイルを変更した場合は、インストールパッケージからファイルを取得する方法を見つける必要があります。
追加された 著者 Chris Stratton,

5 答え

ほとんどのシェルは実行されているコマンドを示すデバッグフラグを持っています。 Bashは、変数を展開する前と後にコマンドを表示するものもあります。 -c -xか-Xフラグをチェック(私が信じている)してみて、あなたが探している情報が表示されているかどうか確認してみましたか?

rcファイル(ほとんどのグローバルファイル)の最初のものとして設定するか、別のシェルから呼び出すことでbashコマンドに渡すことができます。

実際に、別のシェルからbashを呼び出す場合は、 script コマンドを使用して、あなたが見ているすべてのことをファイルに記録することができます。

9
追加された
そのファイルをファイルにダンプした後、私が必要とするすべてのものがいくつかの単純なgrepによって取得されました。
追加された 著者 fny,

-xフラグを付けてbashを起動して、.bashrcや.bash_profileなどを使用してみてください。それはあなたの問題を見つけるのに十分なものでなければなりません

すなわち:

bash -x
source .bashrc
9
追加された

クリーンな初期状態を取得する最も簡単な方法は、現在のホストにSSHをインストールすることですが、SSHにデフォルト設定でシェルを起動させる代わりに、 .bashrc の読み込みを禁止する明示的なコマンドを提供します。

ssh -tt localhost /bin/bash --norc

-tt はSSHにTTYを割り当てるよう強制します。これは通常シェル接続を開くときに起きることですが、明示的なコマンドを実行するときにはデフォルトではありません

- norc は、bashがあなた自身の設定ファイルを読むのを防ぎます。

クリーン環境下でbashプロンプトを表示する必要があります。これは .bashrc の実行前にどの変数が設定されているか調べるのに便利です。トレースを有効にして .bashrc をソースします:

set -x   # Enable tracing
source .bashrc
3
追加された

あなたがプロンプトを定義した場所を見てみてください。恐らくホームディレクトリのいくつかのドットファイルにあります:

grep PS1 ~/.*

プロンプトの現在の値は、それを印刷するだけで確認できます。

echo $PS1

HTH

0
追加された

ホームディレクトリの .bash_history ファイルをチェックして、実行しているコマンドを見つけてください。 vi filename のようなコマンドを使用してinitスクリプトを開くと、コマンド履歴でそれらを見つけることができます。

0
追加された