Как я могу отладить приглашение 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
чтобы открыть сценарии инициализации, он найдет их в истории команд.