Неможливо виконати термінальні команди: "команда" sudo "доступна в" / usr / bin / sudo ""


13

Я використовую Ubuntu 12.04 досить довгий час, і ніколи у мене не виникало проблем виходити назовні з мене. Я намагаюся встановити python 3.2 в мою систему Ubuntu, і кожен раз, коли я запускаю код для компіляції джерела python, я отримую цю помилку:

'Command 'sudo' is available in '/usr/bin/sudo'
The command could not be located because '/usr/bin' is not included in the PATH environment variable.
sudo: command not found'

Я також спробував запустити gksudoкоманду, щоб переглянути те, що показує моє середовище, але я майже отримую ту саму помилку.


Б'юсь об заклад, що, ймовірно, ви отримаєте ту ж помилку, коли спробуєте запустити свої програми через командний рядок. Який результат cat /etc/environment?
Алаа Алі

Не могли б ви сказати нам, яку програму ви намагаєтеся виконати? Деякі програми змінюють змінну PATH, але без імені ми не могли б бути впевнені.
Брайам

Відповіді:


24

Як свідчить помилка, вам слід додати /usr/binкаталог до змінної середовища PATH. Для цього запустіть у терміналі таку команду:

export PATH=$PATH:/usr/bin

Після використання sudoви можете редагувати /etc/environmentфайл, щоб зміни були постійними, тож запустіть у терміналі:

sudo nano /etc/environment

для редагування файлу. Переконайтеся, що шлях такий:

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

Збережіть і закрийте файл Ctrl+ Xі натисніть, Yколи вас запитають.

Дивіться також: Як додати каталог до PATH?


Це не постійно, правда? Якщо він перезапуститься, він знову піде.
Алаа Алі

1
Так. Постійні налаштування для вашого користувача, ймовірно ~/.profile, є ~/.bashrc, ~/.pam_environmentабо ~/.xsessionrc. Налаштування для всіх користувачів, ймовірно , в /etc/profile, /etc/profile.d/*, /etc/environment, /etc/bash/bashrc, /etc/lightdm/xsession. Можливо, один із ваших файлів користувачів переорієнтовує стандартні налаштування системи. Якщо у вас інший користувач або гостьовий акаунт увімкнено, спробуйте з іншим користувачем і перевірте, чи існує проблема і для цього іншого користувача. Якщо ні, перевірте файли сценаріїв запуску власних користувачів.
soulsource

1
Це спрацювало чудово. Велике спасибі! Але ви можете додати більше інформації, як зробити цю зміну постійною? Заздалегідь спасибі.
OscaRoCa

Я отримав цю помилку: MY_USER_NAME не знаходиться у файлі sudoers. Про цей випадок буде повідомлено. , Я не адміністратор .. що мені робити ..
Ghanem

6

Я отримав проблему та усунув її, редагуючи мій файл .bashrc

  1. Відкрийте .bashrc файл за допомогою nano

    $ sudo nano ~/.bashrc
    
  2. Додайте наступний рядок до файлу bashrc

    export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:   /usr/local/games"
    
  3. Натисніть Ctrl + X, щоб зберегти файл

  4. Він попросить змінити файл, натисніть y і Enter

Ви закінчили.


1
Не маніпулюйте файлами у вашому домашньому каталозі ( ~) за допомогою sudo. Це може створити більше проблем, ніж може вирішити.
Мелебій

1

Коли ви хочете додати нове значення до PATHсистемної змінної, ви, швидше за все, додасте новий рядок ~/.bashrcабо ~/.bash_profileфайли.

Наприклад, якщо ви хочете додати /opt/netbeans/binдо PATH, ви повинні додати цей рядок в кінець ~/.bashrcфайлу:

export PATH=$PATH:/opt/netbeans/bin

Давайте перервемо цю лінію.

  • export PATH- Тут ми посилаємося на PATHзмінну
  • =- Ми хочемо призначити йому нове значення за допомогою =оператора (решта рядка - це значення, яке буде збережено в PATH)
  • $PATH- Присвоюємо змінну PATHзначенню, яке було в змінній перед поточною командою
  • : - Додаємо роздільник для нового значення
  • /opt/netbeans/bin - І додайте нове значення до PATH

Ви повинні побачити всі ваші посилання на PATHзмінну у файлах ~/.bashrcабо ~/.bash_profileі переконатися, що ви розширюєте -

export PATH=$PATH:/opt/netbeans/bin

і не перезаписувати так -

export PATH=/opt/netbeans/bin

PATHзмінна

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


Якщо це не працює, ви можете зробити щось подібне:

  • Переконайтеся, що у /etc/environmentфайлі є щось на кшталт наступної змінної, і вона ніколи не визначається в цьому файлі:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
  • Додайте пропущені шляхи з наведеної вище PATHзмінної до PATHзмінної, розташованої в/etc/environment

Перед тестуванням після кожної зміни файлів не пам'ятайте, щоб оновити свої конфігурації.

Наприклад для ~/.bashrcфайлу:

source `~/.bashrc`
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.