Qu'est-ce qui cause toutes ces lignes «declare -x…» lorsque j'ouvre un terminal?

15

Lorsque j'ouvre un terminal sur ma machine Fedora (ou ssh dedans), j'obtiens un tas de lignes comme ceci avant l'invite:

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

Qu'est-ce qui cause cela? Cela s'est peut-être produit après avoir modifié mon .bashrc, mais je crois que tout ce que j'ai changé était d'ajouter un autre chemin de répertoire à "PATH =".

Mise à jour (répondant à la réponse de Heavyd ): J'ai grep'ed ~/.bashrc, ~/.bash_profileet /etc/bashrcpour "declare" et je n'ai rien trouvé.

J'ai regardé /etc/bashrcparce que ~/.bashrccontient les éléments suivants:

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

Je ne vois rien dans les scripts ~/.bashrcou ~/.bash_profileà l'exception du code ci-dessus, "PATH =…", "export…" et "alias ...".

Lorsque j'exécute mon .bashrcscript (à l'aide de " bash ~/.bashrc") ou .bash_profilemon script, je vois la liste des "déclarations", mais aucun message d'erreur. (Je ne vois rien si je cours /etc/bashrc.)

~./bash_profile est très simple:

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

Résolu : Merci andrew.n , votre suggestion m'a aidé à le retrouver. Il s'avère que toutes ces lignes "declare -x…" sont sorties si l'on s'exécute export(par lui-même), et j'avais accidentellement inséré un CR entre "export" et "PATH =…" dans mon .bashrc.

Daryl Spitzer
la source
regardez dans /etc/profile.d/
freiheit
Que dois-je rechercher dans /etc/profile.d/? Quels sont tous ces fichiers? (Je devrais peut-être créer une nouvelle question à ce sujet.)
Daryl Spitzer
Merci. Dans mon cas, c'était aussi le CR entre l'export et le PATH :)
marlar

Réponses:

8

Courir

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

pour démarrer bash en mode verbeux. Cela imprimera chaque ligne du fichier d'initialisation lors de sa lecture et chaque ligne du fichier d'initialisation lors de son exécution, en copiant la sortie dans un fichier appelé foo. Ensuite, vous pouvez regarder foopour voir ce qui provoque declare -xl'appel.

andrew.n
la source
6

Compris que beaucoup d' declare ...instructions sont le résultat d'avoir exportété exécutées quelque part sans argument.

J'ai trouvé une nouvelle ligne accidentelle dans mon .bashrc:

export
VARIABLE=value

Qui aurait dû être

export VARIABLE=value
jgeewax
la source
Oui. Ceci est la bonne réponse. Si vous tapez "export" par lui-même dans votre terminal, vous verrez la même sortie déclarer -x affichée.
Sterling Bourne
Oui, cela s'applique à moi! J'ai accidentellement mis le contenu de l'exportation dans la nouvelle ligne suivante. Je les mets dans la même ligne et ça marche.
fanchyna
3

Oui, il est probable qu'il provienne de votre .bashrc car vous l'avez modifié. Vous avez peut-être introduit une erreur de syntaxe dans le script qui pourrait entraîner sa sortie.

Vous pouvez vous assurer que ces lignes existent dans votre .bashrc en tapant:

grep declare ~/.bashrc

Vous devriez voir au moins ces 4 lignes imprimées sur la console. Vous pouvez également essayer d'exécuter votre script .bashrc à partir de l'invite et de voir si des erreurs sont générées:

bash ~/.bashrc
lourd
la source