Вопрос или проблема
Я установил последнюю версию Debian (netinstall).
У меня проблема: терминал не знает такие команды, как shutdown
, reboot
и так далее.
Когда я использую whereis shutdown
, он говорит мне, что это находится в /usr/sbin
.
Я исправил это в другой попытке установки, написав /usr/sbin
в /etc/profile
, где записывается $PATH
.
Но на этот раз это не сработало.
Я посмотрел это: https://wiki.debian.org/EnvironmentVariables, но либо эти файлы не существуют, либо я не знал, куда вставить путь.
И команда export PATH=$PATH:usr/sbin
не постоянна, она исчезает после перезагрузки, так что это тоже не подходит.
Редактировать: Постойте, возможно, я должен изменить PATH в /etc/environment
?!
Я должен это протестировать, когда дам Debian ещё одну попытку.
Бинарные файлы в директориях /sbin
и /usr/sbin
предназначены для выполнения только суперпользователями/пользователями с правами sudo. Если вы хотите запустить что-то оттуда, добавьте в начало команды sudo
. Тем не менее, ваш пользователь должен быть членом группы sudoers
.
$ sudo shutdown -P +0
Чтобы доказать концепцию, попробуйте which shutdown
против sudo which shutdown
.
Вы это разгадали, вы были на верном пути с export PATH="$PATH:/usr/sbin"
. Что нужно сделать: отредактировать файл .bashrc
и добавить export PATH="$PATH:/usr/sbin"
в конце, затем сохранить и закрыть. После этого это будет работать постоянно.
SystemD через агент аутентификации polkit
позволяет выполнять эти команды (shutdown
/reboot
…) прозрачно:
systemctl poweroff
выключает систему.
Вы даже можете сделать Bash псевдоним:
alias shutdown="systemctl poweroff"
И затем использовать shutdown
прозрачно.
Я установил “sudo” в Debian 11. Затем я снова попробовал “shutdown -r now”, и проблема была решена.
Debian – Невозможно выключить/перезагрузить мой Debian (“bash: shutdown: command not found”)
Войдите как root и выполните…
echo '
export PATH="$PATH:/usr/sbin"
' | tee -a /root/.bashrc
… или явно укажите su
, чтобы установить переменную окружения, как если бы пользователь входил напрямую…
su -
ДОПОЛНИТЕЛЬНО:
Добавьте пользователя в группу sudo с помощью
usermod -aG sudo <USERNAME>
Сделайте это от имени аккаунта root (или аккаунта с правами root).
[Рефераты: https://unix.stackexchange.com/a/664942/61742,
https://superuser.com/a/1539749/195840 ]
Вы можете просто скопировать команды shutdown и reboot из
/usr/sbin
в папку
/usr/bin
sudo cp /usr/sbin/shutdown /usr/bin && sudo cp /usr/sbin/reboot /usr/bin
Таким образом, проблема решена, и вы можете выключить или перезагрузить устройство, не будучи root.
После этого вы можете использовать
which shutdown
и
which reboot
чтобы проверить, используется ли правильная команда.
Ответ или решение
Ошибка, при которой команда shutdown
выдает сообщение «bash: shutdown: command not found», может стать неожиданностью для пользователей, установивших новую версию Debian через netinstall. Несмотря на то, что эта команда является стандартной в большинстве Linux-систем, она может потребовать дополнительных настроек в зависимости от конфигурации системы.
Теория
Команды shutdown
и reboot
расположены в директории /usr/sbin
. Директории /sbin
и /usr/sbin
обычно включают программы, предназначенные для выполнения администраторских задач, и, как правило, доступны только для пользователей с привилегиями superuser (root) или пользователей, имеющих соответствующие права доступа через sudo
.
Следовательно, проблема заключается не в отсутсвии файлов shutdown
и reboot
на диске, а в неправильной настройке переменной окружения PATH
, которая не указывает на эти директории для обычных пользователей. Без указания на эту директорию система не может идентифицировать путь к исполняемым файлам.
Пример
Существует несколько способов решения этой проблемы:
-
Редактирование переменной
PATH
:Одним из временных решений является использование команды
export PATH=$PATH:/usr/sbin
, однако это изменение будет действовать лишь до перезагрузки системы. -
Обновление файла
.bashrc
:Для того чтобы изменение было постоянным, добавьте строку
export PATH="$PATH:/usr/sbin"
в файл.bashrc
, расположенный в домашней директории пользователя. Это добавит путь/usr/sbin
в переменнуюPATH
при каждом запуске интерпретатора Bash. -
Использование
sudo
:Поскольку
shutdown
иreboot
предназначены для выполнения административных задач, рекомендуется использование команды сsudo
, например:sudo shutdown -h now
. -
Создание алиасов для команд SystemD:
Системы, использующие SystemD, могут выполнять аналогичные команды —
systemctl poweroff
для завершения работы иsystemctl reboot
для перезагрузки. Эти команды можно алиасировать в.bashrc
, чтобы упрощать исполнение:alias shutdown="systemctl poweroff"
. -
Добавление в группу
sudo
:Убедитесь, что ваш пользователь входит в группу
sudo
, что можно сделать через командуusermod -aG sudo <USERNAME>
, выполнив ее от имени пользователя root.
Применение
Чтобы максимально упростить процесс управления системой, следует выполнять следующие шаги:
-
Редактирование
.bashrc
:Запустите текстовый редактор, например nano, с помощью команды
nano ~/.bashrc
. Добавьте в конец файла строкуexport PATH="$PATH:/usr/sbin"
и сохраните изменения. Это обеспечит автоматическое выполнение экспорта при запуске каждого нового сеанса рабочего терминала. -
Добавление пользователя в sudo:
Проверьте, входит ли ваш пользователь в группу
sudo
, выполнив командуgroups
. Если не входит, выполнитеsudo usermod -aG sudo <ваше_имя_пользователя>
, чтобы предоставить необходимый доступ. -
Использование команд SystemD:
Настройте простые алиасы в
.bashrc
, добавив строки, такие какalias shutdown="systemctl poweroff"
, для легкодоступного использования команд выключения и перезагрузки. -
Копирование в
/usr/bin
:В качестве крайней меры, для преодоления ограничений по пути, можно скопировать исполняемые файлы из
/usr/sbin
в/usr/bin
, таким образом позволив их выполнение без указания полного пути и без использования привилегий администратора. Однако это может ввести беспорядок в системе и рекомендуется только в исключительных случаях.
Эти действия помогут вам управлять системой Debian более эффективно и избежать ошибок, связанных с недоступностью стандартных команд выключения и перезагрузки.