Как я могу отладить приглашение bash?

я редактировал .bashrc файлы и другие файлы init, и кажется, что я оставил несколько фрагментов кода или два, которые вызывают несколько ошибок в приглашении (например, файл отсутствует), но я не могу их найти.

как отладить приглашение, чтобы узнать, какие сценарии инициализации я небрежно взломал?

5 ответов


большинство оболочек имеют флаги отладки, которые показывают выполняемые команды. Bash может даже иметь тот, который показывает команду до расширения переменных и после. Вы пробовали проверить (я считаю) -C-x или-X флаги и посмотреть, показывают ли они информацию, которую вы ищете.

вы можете установить их как первое в rc-файлах (самый глобальный) или просто передать его в команду bash, вызвав его из другой оболочки.

фактически, если вы вызываете bash из другого оболочки, вы также можете использовать скрипт команда для записи всего, что вы видите и делаете в файл, что делает посмертный анализ намного проще.


попробуйте вызвать bash с флагом-x, а затем поиск .bashrc or .bash_profile или что вы используете. Это должно быть достаточно многословным, чтобы найти свою проблему

ie:

bash -x
source .bashrc

самый простой способ получить чистое начальное состояние-это SSH в ваш текущий хост, но вместо того, чтобы позволить SSH запустить вашу оболочку с настройками по умолчанию, вы предоставляете явную команду, которая предотвращает .bashrc от чтения.

ssh -tt localhost /bin/bash --norc

на -tt заставляет SSH выделять TTY, что обычно происходит, когда вы открываете соединение оболочки, но это не по умолчанию при запуске явной команды.

на --norc предотвращает чтение bash ваш файл настроек (так как мы хотим сделать это сами).

теперь вы должны быть в приглашении bash, в очистить окружающая среда. Это полезно для изучения того, какая переменная установлена перед вашим .bashrc запускает etc. Включить трассировку и источник .bashrc:

set -x   # Enable tracing
source .bashrc

попробуйте увидеть, где вы определили приглашение-возможно, это в каком-то точечном файле в вашем домашнем каталоге:

grep PS1 ~/.*

вы можете увидеть текущее значение подсказки, просто распечатав его:

echo $PS1

HTH


Регистрация .bash_history file в вашем домашнем каталоге, чтобы узнать, какие команды вы запускали. Если вы использовали такие команды, как vi filename чтобы открыть сценарии инициализации, он найдет их в истории команд.