Как я могу отладить приглашение bash? - PullRequest
7 голосов
/ 24 ноября 2011

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

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

Ответы [ 5 ]

9 голосов
/ 24 ноября 2011

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

, то есть:

bash -x
source .bashrc
9 голосов
/ 24 ноября 2011

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

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

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

3 голосов
/ 08 сентября 2016

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

ssh -tt localhost /bin/bash --norc

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

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

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

set -x   # Enable tracing
source .bashrc
0 голосов
/ 24 ноября 2011

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

0 голосов
/ 24 ноября 2011

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

grep PS1 ~/.*

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

echo $PS1

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...