web-dev-qa-db-ja.com

ターミナルを開いたときに、これらすべての「declare-x…」行の原因は何ですか?

Fedoraマシンでターミナルを開く(またはSSHで接続する)と、プロンプトの前に次のような行が表示されます。

declare -x CVS_RSH="ssh"
declare -x DISPLAY="localhost:10.0"
declare -x G_BROKEN_FILENAMES="1"
declare -x HISTSIZE="1000"
…

これは何が原因ですか?これは、.bashrcを編集した後に発生した可能性がありますが、変更したのは「PATH =」に別のディレクトリパスを追加することだけだったと思います。

Updateheavyd の回答に対応):「declare」の~/.bashrc~/.bash_profile/etc/bashrcをgrepして、見つかった何もありません。

/etc/bashrcには次のものが含まれているため、~/.bashrcを調べました。

if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

上記のコード「PATH =…」、「export…」、「alias…」以外は、~/.bashrcまたは~/.bash_profileスクリプトに何も表示されません。

.bashrcスクリプト(「bash ~/.bashrc」を使用)または.bash_profileスクリプトを実行すると、「宣言」のリストが表示されますが、エラーメッセージは表示されません。 (/etc/bashrcを実行しても何も表示されません。)

~./bash_profileは非常に単純です:

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

解決済み:ありがとう andrew.n 、あなたの提案は私がそれを追跡するのを助けました。 exportを(単独で)実行すると、これらすべての「declare -x…」行が出力され、.bashrcの「export」と「PATH =…」の間に誤ってCRを挿入したことがわかりました。

15
Daryl Spitzer

実行

env - HOME="$HOME" /bin/bash --login -xv 2>&1 | tee foo

詳細モードでbashを起動します。これにより、初期化ファイルの読み取り時にすべての行が出力され、実行時に初期化ファイルのすべての行が出力され、出力がfooというファイルにコピーされます。次に、fooを調べて、declare -xが呼び出される原因を確認できます。

8
andrew.n

declare ...ステートメントの多くは、引数なしでどこかでexportが実行された結果であることがわかりました。

.bashrcで誤って改行を見つけました:

export
VARIABLE=value

どちらがすべきだった

export VARIABLE=value
6
jgeewax

はい、編集したため、.bashrcからのものである可能性があります。スクリプトに構文エラーが発生し、それが出力される可能性があります。

次のように入力して、これらの行が.bashrcに存在することを確認できます。

grep declare ~/.bashrc

少なくともこれらの4行がコンソールに印刷されているのが見えるはずです。プロンプトから.bashrcスクリプトを実行して、エラーが出力されるかどうかを確認することもできます。

bash ~/.bashrc
3
heavyd