2011-11-24 12 views
5

.bashrcファイルやその他の初期化ファイルを編集していましたが、プロンプトでいくつかのエラーを引き起こすコードスニペットや2つのコードスニペットが残っているようですが、見つからないそれら。どのようにbashプロンプトをデバッグできますか?

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

+0

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

答えて

9

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

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

実際に、別のシェルからbashを起動した場合は、スクリプトコマンドを使用して、表示して実行するすべてのことをファイルに記録することができます。

+0

ファイルにファイルをダンプした後、私が必要としていたすべてのものがいくつかの単純なgrepのものになりました。 – fny

0

てみますが、定義したプロンプトを表示するには - おそらくいくつかのドットファイルに自分のホームディレクトリに:あなたは、プロンプトの現在の値を見ることができます

grep PS1 ~/.* 

ちょうどそれを印刷して:

echo $PS1 

HTH

0

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

8

-xフラグを付けてbashを起動し、.bashrcまたは.bash_profileなどを使用してみてください。

bash -x 
source .bashrc 
3

クリーンな初期状態を取得する最も簡単な方法は、あなたの現在のホストにSSHすることであるが、代わりにSSHをさせるのデフォルトを使用して、シェルを起動します。それはあなたの問題を発見するのに十分なprolix

すなわちであるべき設定すると、.bashrcが読み取られないようにする明示的なコマンドが提供されます。

ssh -tt localhost /bin/bash --norc 

-tt力のSSH

は、明示的なコマンドを実行するときにシェル接続を開くときに通常何が起こるかですが、デフォルト ないTTYを割り当てます。

--norcは、bashが設定ファイルを読み込むのを防ぎます(私たち自身でやりたいからです)。

の環境でbashプロンプトが表示されるはずです。これは、トレースを使用可能にし、あなたの.bashrcをソースなど、あなたの.bashrc実行する前に設定されているものを変数調べるために有用である:

set -x # Enable tracing 
source .bashrc 
関連する問題