Co powoduje, że wszystkie te wiersze „deklaruj -x…”, gdy otwieram terminal?


15

Kiedy otwieram terminal na moim komputerze Fedory (lub ssh do niego), dostaję kilka takich linii przed pytaniem:

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

Co to powoduje? Może się to zdarzyć po edycji mojej .bashrc, ale wydaje mi się, że wszystko, co zmieniłem, to dodanie innej ścieżki katalogu do „PATH =”.

Aktualizacja (w odpowiedzi na odpowiedź Heavyyda ): Grepowałem ~/.bashrc, ~/.bash_profilea /etc/bashrcdla „deklarowania” nic nie znalazłem.

Spojrzałem, /etc/bashrcponieważ ~/.bashrczawiera następujące elementy:

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

Nie widzę niczego w skryptach ~/.bashrcani ~/.bash_profilepoza powyższym kodem, „PATH =…”, „export…” i „alias…”.

Kiedy uruchamiam .bashrcskrypt (używając „ bash ~/.bashrc”) lub .bash_profileskrypt, widzę listę „deklaruje”, ale nie ma komunikatów o błędach. (Nic nie widzę, jeśli biegnę /etc/bashrc.)

~./bash_profile jest bardzo proste:

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

Rozwiązane : Dzięki andrew.n , twoja sugestia pomogła mi to wyśledzić. Okazuje się, że wszystkie te wiersze „deklaruj -x…” są wyprowadzane, jeśli jeden z nich działa export(sam w sobie), a ja przypadkowo wstawiłem CR pomiędzy „export” a „PATH =…” w moim .bashrc.


zajrzyj do /etc/profile.d/
freiheit

Czego powinienem szukać w /etc/profile.d/? Co to za wszystkie pliki? (Być może powinienem utworzyć nowe pytanie na ten temat.)
Daryl Spitzer,

Dzięki. W moim przypadku był to również CR między eksportem a PATH :)
marlar

Odpowiedzi:


8

Biegać

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

do uruchamiania bash w trybie pełnym. Spowoduje to wydrukowanie każdego wiersza pliku inicjującego podczas odczytywania i każdego wiersza pliku inicjującego podczas jego wykonywania, kopiując dane wyjściowe do pliku o nazwie foo. Następnie możesz zajrzeć foodo środka, aby zobaczyć, co powoduje declare -xwywołanie.


6

Zrozumiałem, że wiele declare ...instrukcji jest wynikiem exporturuchomienia gdzieś bez argumentu.

Znalazłem przypadkową nową linię w moim .bashrc:

export
VARIABLE=value

Które powinno być

export VARIABLE=value

Tak. To jest poprawna odpowiedź. Jeśli wpiszesz sam „eksport” w swoim terminalu, zobaczysz to samo wyjście deklaruje -x.
Sterling Bourne

Tak, dotyczy to mnie! Przypadkowo umieściłem treść eksportu w następnym nowym wierszu. Umieściłem je w tej samej linii i to działa.
fanchyna

3

Tak, prawdopodobnie pochodzi z twojego .bashrc, ponieważ go edytowałeś. Być może w skrypcie wprowadzono błąd składniowy, który może spowodować, że zostanie wyświetlony.

Możesz upewnić się, że te wiersze istnieją w pliku .bashrc, wpisując:

grep declare ~/.bashrc

Powinieneś zobaczyć przynajmniej te 4 linie wydrukowane na konsoli. Możesz także spróbować uruchomić skrypt .bashrc z wiersza polecenia i sprawdzić, czy wystąpią jakiekolwiek błędy:

bash ~/.bashrc
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.