Сломал мой терминал с неверным PATH

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

Каждая команда, которую я использую в терминале, дает мне ошибку:

sh: parse_git_branch: команда не найдена

Это было то, что у меня было в моем автозаполнении bash_profile для git. Проблема в том, что после того, как я удалил файлы с помощью /bin/rm <file>, я не могу применить свои изменения с помощью source ~/.bash_profile, потому что это дает мне ошибки. Я просмотрел этот вопрос и этот вопрос, но мне все равно не повезло.

Как я могу исправить мою командную строку после нарушения подобных вещей?


person 123    schedule 01.10.2016    source источник
comment
Обратитесь к своему системному администратору или обратитесь к привилегированному пользователю.   -  person Cyrus    schedule 01.10.2016
comment
Вы можете просто открыть новый терминал или выйти/войти. Или перезагрузить.   -  person that other guy    schedule 02.10.2016


Ответы (2)


Вы можете экспортировать правильный PATH в текущем сеансе с помощью команды, подобной:

export PATH=/usr/local/bin:/usr/bin:/bin

После использования этого вы сможете получить исходный файл bashrc.

person WayToDoor    schedule 01.10.2016

Вы всегда можете изменить свой путь прямо в командной строке для остальной части текущего сеанса оболочки: PATH="/usr/local/bin:/usr/sbin:/usr/bin:/bin:/sbin:"

Экспорт PATH не решит вашу проблему. Он будет экспортировать значение PATH только в дочерние оболочки/процессы. Это приводит только к тому же результату, что и сброс/изменение переменной PATH из командной строки (как показано выше), потому что ваша область действия ограничена текущим процессом оболочки (и его дочерними элементами), пока вы работаете в этой среде оболочки (работая из командная строка). Если вы откроете новый терминал (запустите новую оболочку входа, которая является родительским процессом), bash по-прежнему будет пытаться читать файлы ресурсов (.bash_profile и .bashrc), которые больше не существует.

Таким образом, нам нужно иметь возможность расширить область действия и сообщить bash, что мы хотим внести изменения во все будущие bash (процессы оболочки — новые оболочки, оболочки внутри оболочек и т. д.), и это можно сделать, написав эти заявления в файлах ресурсов.

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

bash похож на любой другой скрипт или программу. Вы убрали все его вводы, указатели и ярлыки, и теперь он просто стал довольно тупым, поэтому вам нужно быть явным во всем, что вы делаете, пока вы не сможете научить его, где искать материал (дайте ему ПУТЬ для поиска) и сократить ваши разговоры с ним.

Если у вас нет резервной копии вашего .bash_profile, вы можете использовать вот эту:

    # This loads in the configuration in .bashrc
    # Put all configuration in there!
    if [ -f ~/.bashrc ]; then
        source ~/.bashrc
    fi

А вот .bashrc, с которого можно начать:

    export PATH="/bin:/sbin:/usr/local/bin:/usr/bin:/usr/sbin:"
person GH05T    schedule 01.10.2016