Как я могу сбросить $ PATH к его значению по умолчанию в Ubuntu?


31

Я случайно сбросил все каталоги $PATH, пытаясь добавить новый в ~/.bashrc. Я открыл новое окно терминала, когда я редактировал, и теперь $PATHон пуст. Я волнуюсь, если я загружаюсь с другого диска, чтобы найти, $PATHя не смогу загрузиться в этот диск снова.

В основном, что является результатом по умолчанию echo $PATH?


1
Закомментируйте или исправьте эту строку экспорта, и вы должны идти.
Пантера

~/.bashrcэто неправильное место для установки переменных окружения. Вы должны сделать это ~/.profileвместо этого.
гейра

Да, я понял это. PATH все еще в порядке в другом окне терминала, которое было открыто до нового, поэтому просто исправив строку экспорта, добавив :$PATHв конце, восстановил PATH. И да, ~/.profileесть код «установить PATH, чтобы он включал личный ящик пользователя, если он существует», то есть$HOME/bin
Cee

Ответы:


35

Ответ на ваш вопрос:

PATH=$(getconf PATH)

и работает на любой POSIX-совместимой системе. Выбранный ответ является правильным способом дополнить путь, не стирая ранее существующее содержимое. Если вы используете Bash, вы можете рассмотреть:

PATH+=:$mynewdir

У меня возникли проблемы с использованием большого количества команд ( sed: No such file or directoryтипа проблем) после того, как я случайно установил значение PATH на пустое время в течение очень длительного процесса (т. Е. Я не смог перезапустить). Я не мог использовать getconf. Для сброса моего пути я использовал $(export $(cat /etc/environment)":/usr/bin/additional:/usr/bin/paths"). Для любопытных: /etc/environmentгде переменная PATH изначально установлена ​​во многих разновидностях Linux.
Ник Булл,

2
Эта работа удивит меня. Возможно, «export» без окружающего «$ (...)» может быть, но это будет то, что будет там. Используйте «source / etc / ..». В любом случае, попробуйте «/ usr / bin / getconf», если вы не можете даже найти «getconf».
Брюс

Предпочитаю вашу последнюю идею, используя полный путь намного больше, чем мой задним числом! Спасибо за ответ
Ник Булл

1
Если переменная PATH пуста, PATH=$(getconf PATH)она не будет полезна, а только приведет кbash: getconf: No such file or directory
Макс. N

1
Если PATH пуст, обратите внимание на комментарий выше: попробуйте "/ usr / bin / getconf". Если это не сработает, вам нужно узнать, где ваша система хранит свои команды POSIX и использовать этот каталог.
Брюс

17

Вы можете найти его в / etc / environment:

$ /usr/bin/cat /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Итак, просто источник:

$ source /etc/environment 
$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

1
кошка не будет работать таким образом, как в вашем ответе, так как нет $ PATH
Йозеф Климук

Вы правы. Я просто изменил ответ. Спасибо!
Мануэль Хесус Родригес

8

Добавление: $ PATH в конец строки экспорта исправило проблему, например export PATH=<directory to be added>:$PATH

Я добавляю эту строку в ~/.bash_rcфайл вместо ~/.profileфайла, чтобы сразу увидеть эффект в новом терминале и по другим причинам, основываясь на информации здесь: https://superuser.com/questions/176404/linux-bash-not- погрузо-профиль-в-новом-сессии

Для меня вывод по умолчанию echo $PATHперед добавлением нового каталога:

/ USR / Библиотека / LightDM / LightDM: / USR / местные / SBIN: / USR / местные / бен: / USR / SBIN: / USR / бен: / SBIN: / бен: / USR / игры


3

Путь по умолчанию

/home/_username_/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games 

Надеюсь, это поможет вам


Это отличается от моего стандартного PATH. Увидеть ниже.
Cee
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.