15

Когда я открываю терминал на моей машине 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 =».

Обновление (в ответ на ответ Heavyyd 's): я grep'ed ~/.bashrc , ~/.bash_profile и /etc/bashrc для "объявления" и ничего не нашел.

Я посмотрел на /etc/bashrc потому что ~/.bashrc содержит следующее:

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

Я не вижу ничего в скриптах ~/.bashrc или ~/.bash_profile кроме приведенного выше кода: «PATH =…», «export…» и «alias…».

Когда я запускаю свой сценарий .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, ваше предложение помогло мне отследить его. Оказывается, что все эти строки "Declare -x ..." выводятся, если выполняется export (сам по себе), и я случайно вставил CR между "export" и "PATH = ..." в моем .bashrc .

3 ответа3

8

Бежать

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

запустить bash в подробном режиме. Это напечатает каждую строку файла инициализации, когда он читается, и каждую строку файла инициализации, когда он выполняется, копируя вывод в файл с именем foo . Затем вы можете заглянуть в foo чтобы узнать, что вызывает вызывание declare -x .

6

Выяснилось, что множество операторов declare ... является результатом запуска export без аргумента.

Я обнаружил случайный перевод строки в моем .bashrc:

export
VARIABLE=value

Который должен был быть

export VARIABLE=value
3

Да, вероятно, это исходит от вашего .bashrc, потому что вы его отредактировали. Возможно, вы ввели в скрипт синтаксическую ошибку, которая может привести к ее выводу.

Вы можете убедиться, что эти строки существуют в вашем .bashrc, набрав:

grep declare ~/.bashrc

Вы должны увидеть как минимум те 4 строки, которые выводятся на консоль. Вы также можете попробовать запустить скрипт .bashrc из командной строки и посмотреть, нет ли ошибок:

bash ~/.bashrc

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .