Was verursacht all diese "declare -x ..." - Zeilen, wenn ich ein Terminal öffne?

15

Wenn ich ein Terminal auf meinem Fedora-Rechner öffne (oder ssh in ihn hinein), erhalte ich vor der Eingabeaufforderung eine Reihe von Zeilen wie die folgende:

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

Was verursacht das? Dies kann vorgekommen sein, nachdem ich meine bearbeitet habe .bashrc, aber ich glaube, alles, was ich geändert habe, war, einen anderen Verzeichnispfad zu "PATH =" hinzuzufügen.

Update (als Antwort auf die Antwort von heavyd ): Ich habe gegriffen ~/.bashrc, ~/.bash_profileund /etc/bashrcfür "deklarieren" und nichts gefunden.

Ich habe mir /etc/bashrcda ~/.bashrcfolgendes angeschaut :

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

Ich sehe nichts in den Skripten ~/.bashrcoder ~/.bash_profileaußer dem obigen Code "PATH = ...", "export ..." und "alias ...".

Wenn ich mein .bashrcSkript (mit " bash ~/.bashrc") oder .bash_profileSkript ausführe, wird die Liste der "Deklarationen" angezeigt, aber keine Fehlermeldungen. (Ich sehe nichts, wenn ich renne /etc/bashrc.)

~./bash_profile ist sehr einfach:

# .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

Behoben : Danke andrew.n , dein Vorschlag hat mir geholfen, ihn aufzuspüren. Es stellt sich heraus, dass alle diese "declare -x ..." - Zeilen ausgegeben werden, wenn eine export(von selbst) ausgeführt wird, und ich versehentlich ein CR zwischen "export" und "PATH = ..." in meine eingefügt habe .bashrc.

Daryl Spitzer
quelle
schau in /etc/profile.d/
freiheit
Was muss ich in /etc/profile.d/ beachten? Was sind all diese Dateien? (Vielleicht sollte ich eine neue Frage dazu stellen.)
Daryl Spitzer
Vielen Dank. In meinem Fall war es die CR zwischen Export und PATH auch :)
Marlar

Antworten:

8

Lauf

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

um bash im ausführlichen Modus zu starten. Dadurch wird jede Zeile der Initialisierungsdatei beim Lesen und jede Zeile der Initialisierungsdatei beim Ausführen gedruckt und die Ausgabe in eine aufgerufene Datei kopiert foo. Dann können Sie nachsehen foo, was dazu führt declare -x, dass angerufen wird.

andrew.n
quelle
6

Es wurde herausgefunden, dass viele declare ...Anweisungen das Ergebnis sind, wenn exportsie irgendwo ohne Argument ausgeführt wurden.

Ich habe eine versehentliche Zeilenumbruch in meinem .bashrc:

export
VARIABLE=value

Welches hätte sein sollen

export VARIABLE=value
jgeewax
quelle
Ja. Das ist die richtige Antwort. Wenn Sie in Ihrem Terminal selbst "export" eingeben, wird dieselbe Ausgabe von declare -x angezeigt.
Sterling Bourne
Ja, das trifft auf mich zu! Ich habe versehentlich den Inhalt des Exports in die nächste neue Zeile gestellt. Ich habe sie in die gleiche Zeile gesetzt und es funktioniert.
Fanchyna
3

Ja, es ist wahrscheinlich, dass es von Ihrem .bashrc stammt, weil Sie es bearbeitet haben. Möglicherweise haben Sie einen Syntaxfehler in das Skript eingefügt, der dazu führen kann, dass dieser ausgegeben wird.

Sie können sicherstellen, dass diese Zeilen in Ihrer .bashrc-Datei vorhanden sind, indem Sie Folgendes eingeben:

grep declare ~/.bashrc

Sie sollten mindestens diese 4 Zeilen auf der Konsole sehen. Sie können auch versuchen, Ihr .bashrc-Skript an der Eingabeaufforderung auszuführen und festzustellen, ob Fehler ausgegeben werden:

bash ~/.bashrc
heavyyd
quelle