Як я можу скинути $ PATH до значення за замовчуванням в Ubuntu?


31

Я випадково скинув усі каталоги $PATH, намагаючись додати новий ~/.bashrc. Я відкрив нове вікно терміналу під час редагування і тепер $PATHпорожнє. Мене хвилює, якщо я завантажуюся з іншого диска, щоб знайти, $PATHя не зможу знову завантажитися на цей диск.

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


1
Прокоментуйте або виправте цю експортну лінію, і вам слід добре пройти.
Пантера

~/.bashrcневірно встановити змінні середовища. Ви повинні зробити це ~/.profileзамість цього.
geirha

Так, я зрозумів це. 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
Ця робота здивувала б мене. Можливо, "експортувати" без навколишніх "$ (...)" речей може, але все одно буде там. Використовуйте "джерело / тощо / ..". У будь-якому разі спробуйте "/ usr / bin / getconf", якщо ви навіть не можете знайти "getconf".
Брюс

Віддайте перевагу своїй кінцевій ідеї, використовуючи повний шлях набагато більше, ніж мій заднім числом! Дякуємо за відповідь
Nick Bull

1
Якщо змінна PATH порожня, то PATH=$(getconf PATH)вона не буде корисною, а лише приведе доbash: getconf: No such file or directory
Max 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
кішка не буде працювати так, як у вашій відповіді, оскільки немає $ ПАТ
Йозеф Клімук

Ти правий. Я просто змінив відповідь. Дякую!
Мануель Ісус Родрігес

8

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

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

Для мене результатом за замовчуванням echo $PATHперед додаванням нової директорії є:

/ usr / lib / lightdm / lightdm: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games


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.