Вопрос или проблема
Я просто игрался с командой whatis
. По какой-то причине, каждый раз, когда я выполняю whatis cd
, я получаю cd: nothing appropriate.
Что это означает? Почему так? Похоже, что для cd
тоже нет записи в man
. Почему так?
cd
— это встроенная команда оболочки:
$ type cd cd is a shell builtin
Документацию для cd
можно найти с помощью:
man builtins
Запустите её, затем нажмите /
и ищите “cd”.
В Bash вы также можете открыть страницу помощи с помощью:
help cd
whatis
отображает одну строку информации из страницы man команды (той, которую вы найдете в разделе NAME
).
nothing appropriate
отображается, когда страница man не найдена для этой команды.
cd
не имеет собственной страницы man, потому что это не исполняемый файл, а встроенная команда вашей оболочки (как, например, shopt
или alias
)(*), отсюда и результат, который вы получаете.
(*) Чтобы усложнить вопрос, есть обычные команды, такие как echo
и printf
, которые переопределяются схожими (и обычно совместимыми) встроенными функциями оболочки, поэтому эти встроенные имеют собственную страницу man
, но страница man на самом деле относится к исполняемому файлу (который может иметь немного другие параметры).
Ответ xenoid верен для Ubuntu, но я добавлю немного контекста.
whatis
использует индекс, созданный и поддерживаемый mandb
, чтобы найти документацию, которую вы ищете. Если указанный индекс не существует, или если команда, которую вы ищете, отсутствует в существующем индексе, вы увидите Nothing appropriate.
Если ваша установка еще не имеет индекса mandb
, вы можете создать его, выполнив sudo mandb
. В Ubuntu man cd
не возвращает никаких записей, так что не стоит ожидать, что whatis cd
также вернет что-либо. Однако, например, в Rocky Linux man cd
отправляет вас на справочную страницу BASH_BUILTINS, так что вы можете ожидать, что whatis cd
также возвратит что-то. В моем случае мне пришлось выполнить mandb
, чтобы создать справочный индекс, и теперь whatis cd
возвращает следующее:
cd (1) - bash built-in commands, see bash(1)
cd (1p) - change the working directory
(Благодарность https://stackoverflow.com/a/11782300/26721886 за указание правильного направления)
Ответ или решение
Почему команда whatis cd
не возвращает результаты в Ubuntu 18.04?
Когда вы выполняете команду whatis cd
в Ubuntu 18.04 и получаете ответ "cd: ничего подходящего", это связано с тем, что cd
является встроенной командой оболочки Bash, а не отдельным исполняемым файлом. Давайте разберем это более детально.
1. Встроенные команды в оболочке
Команда cd
(change directory) используется для изменения текущего рабочего каталога. Важно отметить, что она является встроенной командой (builtin) языка shell, в отличие от многих других программ, которые имеют свои собственные man страницы. Чтобы подтвердить, что cd
— это встроенная команда, вы можете использовать команду:
type cd
Это вернет:
cd is a shell builtin
Таким образом, поскольку cd
не является отдельным исполняемым файлом, в системе нет отдельной man страницы для этой команды.
2. Отсутствие man страницы
Как было упомянуто, cd
не имеет своей man страницы в Ubuntu, что объясняет, почему команда man cd
не возвращает ничего. Тем не менее, документацию по встроенным командам Bash можно найти в разделе терминала Help. Чтобы получить информацию о cd
, выполните следующую команду:
help cd
Это предоставит вам справочную информацию о функции команды и ее использовании. Альтернативно, вы также можете посмотреть на man страницу для встроенных команд, выполнив:
man builtins
Затем, используя поиск по странице (нажмите /
и введите "cd"), вы сможете найти информацию об этой команде в контексте встроенных функций Bash.
3. Использование команды man
Команда whatis
работает на основе индекса, который создается и поддерживается утилитой mandb
. Она ищет информацию в базе данных man страниц, и если соответствующий индекс для команды cd
отсутствует, вы получите сообщение о том, что "ничего подходящего". Чтобы убедиться, что индекс актуален, можно выполнить:
sudo mandb
4. Примеры из других дистрибутивов
Следует отметить, что в других дистрибутивах, например, в Rocky Linux, выполнение команды man cd
может показать страницу, относящуюся к встроенным командам Bash, что также повлияет на результат выполнения whatis cd
. Это объясняет различные поведения на разных системах.
Заключение
Таким образом, сообщение "cd: ничего подходящего" при выполнении whatis cd
в Ubuntu 18.04 является нормальным, так как cd
является встроенной командой Bash и не имеет отдельной man страницы. Для получения информации о ее использовании рекомендуется обращаться к встроенной справке с помощью команды help cd
или искать информацию в man странице builtins
. Эта специфика встроенных команд и их документации может немного отличаться в зависимости от конкретного дистрибутива Linux, но принцип остается тем же.
Если у вас возникли дополнительные вопросы или нужна дальнейшая помощь, не стесняйтесь обращаться!