Автор Тема: bash: [ ]: команда не найдена  (Прочитано 42666 раз)

Оффлайн Axe79

  • Участник
  • *
  • Сообщений: 175
bash: [ ]: команда не найдена
« : 22.01.2009 01:01:20 »
Почему некоторые команды не находятся?

Я в курсе что все команды вроде хранятся в bin
но почему та же самая команда shutdown то пишет что не находит
возможно эмуляторы консоли отличаются наборами команд

и как правильно ставить пакеты Чтоб потом можно было найти то что ставил...
(анология с win не просматривается ...)
а то например поставил через rpm шрифты
а в synaptik-е их не видно  (
 ;D
Ничто так не стимулирует тягу к труду интеллектуальному, как обилие труда физического!
Gutta cavat lapidem non vi, sed saepe cadendo Капля долбит камень не силой, а частым падени

Alexei_VM

  • Гость
Re: bash: [ ]: команда не найдена
« Ответ #1 : 22.01.2009 01:09:47 »
Почему некоторые команды не находятся?

Я в курсе что все команды вроде хранятся в bin
но почему та же самая команда shutdown то пишет что не находит

Ну давайте разбираться:

[alexei@threebears ~]$ whereis shutdown
shutdown: /sbin/shutdown /usr/share/man/man2/shutdown.2.gz /usr/share/man/man8/shutdown.8.gz

Итого: программа shutdown находится в каталоге /sbin, который по умолчанию НЕ входит в пути поиска программ (PATH) у пользователя.  Зато /sbin в путях у рута, переключаться в которого СТРОГО НАСТРОГО ВСЕГДА ВО ВСЕХ СЛУЧАЯХ надо командой "su -", или логинясь рутом в консоль непосредственно.

и как правильно ставить пакеты Чтоб потом можно было найти то что ставил...

Это уже сто тыщ раз тут обсуждалось: пакеты надо ставить командой apt-get или программой Synaptic. И никак иначе.

Оффлайн Axe79

  • Участник
  • *
  • Сообщений: 175
Re: bash: [ ]: команда не найдена
« Ответ #2 : 22.01.2009 01:48:22 »

Итого: программа shutdown находится в каталоге /sbin, который по умолчанию НЕ входит в пути поиска программ (PATH) у пользователя.  Зато /sbin в путях у рута, переключаться в которого СТРОГО НАСТРОГО ВСЕГДА ВО ВСЕХ СЛУЧАЯХ надо командой "su -", или логинясь рутом в консоль непосредственно.


[axe@localhost ~]$ whereis shutdown
shutdown: /sbin/shutdown /usr/share/man/man8/shutdown.8.gz
[axe@localhost ~]$ su -c 'shutdown now'
Password:
bash: shutdown: команда не найдена
[axe@localhost ~]$

Мож я не понял...




и как правильно ставить пакеты Чтоб потом можно было найти то что ставил...

Это уже сто тыщ раз тут обсуждалось: пакеты надо ставить командой apt-get или программой Synaptic. И никак иначе.

сорри я просто наверное по старым учебникам шарился(((
Я исправлюсь  :D ;D
www.matclub.ru/linos как по мне как раз для валенкоФ

« Последнее редактирование: 22.01.2009 01:53:56 от Axe79 »
Ничто так не стимулирует тягу к труду интеллектуальному, как обилие труда физического!
Gutta cavat lapidem non vi, sed saepe cadendo Капля долбит камень не силой, а частым падени

Alexei_VM

  • Гость
Re: bash: [ ]: команда не найдена
« Ответ #3 : 22.01.2009 03:23:05 »
Мож я не понял...

Что вы не поняли? Ну тогда почитайте man su повнимательнее, на предмет того, какие параметры окружения используются при каком вызове su. Еще раз: /sbin НЕ в путях поиска у пользователя, поэтому от пользователя команда shutdown не находится. Что вам мешает писать /sbin/shutwodn?


Я исправлюсь  :D ;D
www.matclub.ru/linos как по мне как раз для валенкоФ

Да-да, и начните с чтения актуальной документации, а не с той, которая устарели еще в прошлом веке.
http://linux.armd.ru/ru/documentation/metod/

Alexei_VM

  • Гость
Re: Как узнать команду?
« Ответ #4 : 22.01.2009 21:16:34 »
А как узнать команду, которая паузу включает при закачке файлов в FF ?

(это нужно для того, чтобы качественно использовать команду at для выключения компа ночью, с возможностью докачки файла, если он, допустим, не успел полностью скачаться. В виду снижения скорости, например. При ребутировании, докачки-то, в FF не работает!)

Не качайте ФФ.

Alexei_VM

  • Гость
Re: Как узнать команду?
« Ответ #5 : 22.01.2009 21:20:24 »
Не качайте ФФ.
А чем качать?
Каким-нить плагином для ФФ, DownThemAll например.

P.S. Но главный вопрос, всё-равно, как узнать команду...?
Вроде и никакие команды тогда не нужны будут.

DdShurick

  • Гость
Re: bash: [ ]: команда не найдена
« Ответ #6 : 22.01.2009 21:23:53 »
2 Axe79
Цитировать
[axe@localhost ~]$ whereis shutdown
shutdown: /sbin/shutdown /usr/share/man/man8/shutdown.8.gz
[axe@localhost ~]$ su -c 'shutdown now'
Password:
bash: shutdown: команда не найдена
[axe@localhost ~]$

Мож я не понял...

 Вы немного торопитесь с командой shutdown. Сначала su , после этого вводите пароль root и лишь потом, когда появится # командуете shutdown -h now (для перезагрузки -r )
« Последнее редактирование: 22.01.2009 21:27:22 от DdShurick »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 367
  • Учиться .... Телепатами не рождаются, ими ....
Re: bash: [ ]: команда не найдена
« Ответ #7 : 22.01.2009 21:30:03 »
У su в переменной PATH нет путей /usr/sbin и /sbin -  или
su -c '/sbin/shutdown now'
или
su - -c 'shutdown now'

DdShurick

  • Гость
Re: bash: [ ]: команда не найдена
« Ответ #8 : 22.01.2009 21:38:37 »
 Спасибо. Теперь буду знать. что в Альте синтаксис команд отличается от общепринятого. Впрочем я об этом подозревал и раньше. Только зачем?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 367
  • Учиться .... Телепатами не рождаются, ими ....
Re: bash: [ ]: команда не найдена
« Ответ #9 : 22.01.2009 22:02:50 »
Он не отличается - команда
su - -c 'shutdown now'
сработает в любом дистрибутиве и она соответствует "стандартному" поведению su.
Вариант упрощённого описания
su  -c 'shutdown now'
не принят в ни в одном дистрибутиве ALT Linux - это уже исторический факт, традиция, которую никто менять пока не собирается.
« Последнее редактирование: 22.01.2009 23:09:41 от ruslandh »

Alexei_VM

  • Гость
Re: bash: [ ]: команда не найдена
« Ответ #10 : 22.01.2009 22:32:58 »
Теперь буду знать. что в Альте синтаксис команд отличается от общепринятого.

У нас su с минусом. Это и есть стандартное и документированное разработчиками su поведение.

Оффлайн Axe79

  • Участник
  • *
  • Сообщений: 175
Re: bash: [ ]: команда не найдена
« Ответ #11 : 23.01.2009 03:00:13 »
Что вы не поняли? Ну тогда почитайте man su повнимательнее, на предмет того, какие параметры окружения используются при каком вызове su. Еще раз: /sbin НЕ в путях поиска у пользователя, поэтому от пользователя команда shutdown не находится. Что вам мешает писать /sbin/shutwodn?

Иногда простейшие вещи выскальзывают из под внимания...
Мне то думалось что команды в общей сумме где-то зарегестрированы (в каком то списке или регистре {не воспринимать как обший список всех файлов} )  а в консоли фигурируют в виде линка
А они юзаються как обычные exe-шники в win-де и оперировать с ними можно как с обычными файлами.......
Надеюсь я пришёл к правильным выводам?


Да-да, и начните с чтения актуальной документации, а не с той, которая устарели еще в прошлом веке.
http://linux.armd.ru/ru/documentation/metod/

Тут уж как карта ляжет если начинаешь на чистом энтузиазме то литературу выбираешь ту в которую
вникаеш изначально. Как и дистр...  (никто не будет вчитываться неделю в то что до него не доходит)...
А тут как раз удобный ритм теория практика)))
Не помню дословно ...
"Чтобы выучить язык програмирования - надо писать на нём программы..." Афтора тоже не припоминаю :D
imho чтото в этом есть ;)

Но за совет БОЛЬШОЕ спасибо)
Почитаем )

Ничто так не стимулирует тягу к труду интеллектуальному, как обилие труда физического!
Gutta cavat lapidem non vi, sed saepe cadendo Капля долбит камень не силой, а частым падени

KG

  • Гость
Re: bash: [ ]: команда не найдена
« Ответ #12 : 23.01.2009 06:12:13 »
Спасибо. Теперь буду знать. что в Альте синтаксис команд отличается от общепринятого. Впрочем я об этом подозревал и раньше. Только зачем?
Теперь буду знать. что в Альте синтаксис команд отличается от общепринятого.

У нас su с минусом. Это и есть стандартное и документированное разработчиками su поведение.

Тут помоему неплохо сказано.http://www.altlinux.org/Su
Здесь вообще неплохо сказано так же о работе под рутом,вернее как обойтись без рутовских прав.
« Последнее редактирование: 23.01.2009 06:14:50 от KG »

DdShurick

  • Гость
Re: bash: [ ]: команда не найдена
« Ответ #13 : 23.01.2009 09:44:18 »
 Отдельное спасибо KG за ссылку. Теперь в голове немного начало проясняться по поводу всей этой su - бординации ;)

Alexei_VM

  • Гость
Re: bash: [ ]: команда не найдена
« Ответ #14 : 23.01.2009 12:35:52 »
А они юзаються как обычные exe-шники в win-де и оперировать с ними можно как с обычными файлами.......
Надеюсь я пришёл к правильным выводам?

Неверно :) Это в Виндовз все "как в ДОСе", а в ДОСе оно "как в UNIX", ну и в Linux оно тоже как в UNIX. :)

Все исполняемые файлы (программы, скрипты и т.п.) лежат где-то на диске. Стандартное место для этого -- /usr/bin. Там лежат "обычные программы". Очень важные, основополагающие программы лежат в /bin. "Системные" программы, которые не нужны пользователю, а нужны администратору системы, лежат в /sbin (более важные) и /usr/sbin (чуть менее важные).

Соответственно, есть переменная окружения под названием PATH, в которую занесен список каталогов, в которых оболочка (прогамма, интерактивно взаимодействующая с пользователем, по умолчанию bash) ищет программы. И когда вы что-то набираете в строке, то оболочка (shell) сначала сравнивает набранное со списком внутренних команд, потом с тем, что находится в PATH, причем в той последовательности, которая в PATH записана. Если найдено -- исполняет, если не найдено -- выдает соответствующее предупреждение.

По умолчанию, у пользователя в PATH нет /sbin и /usr/sbin. У рута есть. По умолчанию команда su просто повышает привилегии пользователя до рутовских, не трогая настройки его окружения. Поэтому и PATH не меняется (но это не самая большая проблема в работе под su без минуса). Вызов su - перенастраивает еще и окружение.