Я думаю, что Ваш tty сообщает о несправедливости tty размер. Попытайтесь работать
pi@raspberrypi$ stty -aF /dev/ttyO0
Там Вы будете видеть, сколько строк и столбцов tty думает, что имеет. Этот размер должен соответствовать набору размера в шпаклевке. Можно также изменить параметры, такие как число столбцов, с помощью stty
. Команда была бы чем-то как
pi@raspberrypi$ stty -F /dev/ttyO0 cols 80
Можно проверить больше параметров по http://unixhelp.ed.ac.uk/CGI/man-cgi?stty
findmnt -nt btrfs
, исходный субтом находится в [...]
, точка монтирования - первый столбец. Кроме того, вы можете самостоятельно просмотреть файл /proc/self/mountinfo
.
тип
указывает, что будет использовать оболочка. Например:
$ type echo
echo is a shell builtin
$ type /bin/echo
/bin/echo is /bin/echo
Это означает, что если в подсказке bash ввести echo
, вы получите встроенный. При указании пути, как в /bin/echo
, будет получена внешняя команда.
который
, напротив, является внешней программой, которая не имеет специальных знаний о том, что будет делать оболочка. В debian-подобных системах , который
является сценарием оболочки, который выполняет поиск исполняемого файла в PATH. Таким образом, он даст вам имя внешнего исполняемого файла, даже если оболочка будет использовать встроенный.
Если команда доступна только как встроенная, , которая
ничего не возвращает:
$ type help
help is a shell builtin
$ which help
$
Теперь, пусть; s посмотрите на cat
:
$ type cat
cat is hashed (/bin/cat)
$ which cat
/bin/cat
cat
является внешним исполняемым файлом, а не оболочкой builtin.
findmnt -nt btrfs
, исходный субтом находится в [...]
, точка монтирования - первый столбец. Кроме того, вы можете самостоятельно просмотреть файл /proc/self/mountinfo
.
тип
указывает, что будет использовать оболочка. Например:
$ type echo
echo is a shell builtin
$ type /bin/echo
/bin/echo is /bin/echo
Это означает, что если в подсказке bash ввести echo
, вы получите встроенный. При указании пути, как в /bin/echo
, будет получена внешняя команда.
который
, напротив, является внешней программой, которая не имеет специальных знаний о том, что будет делать оболочка. В debian-подобных системах , который
является сценарием оболочки, который выполняет поиск исполняемого файла в PATH. Таким образом, он даст вам имя внешнего исполняемого файла, даже если оболочка будет использовать встроенный.
Если команда доступна только как встроенная, , которая
ничего не возвращает:
$ type help
help is a shell builtin
$ which help
$
Теперь, пусть; s посмотрите на cat
:
$ type cat
cat is hashed (/bin/cat)
$ which cat
/bin/cat
cat
является внешним исполняемым файлом, а не оболочкой builtin.
Вы также можете использовать команду where
, которая является более эффективной, потому что она показывает, где команда находится на машине, как и библиотека страниц вручную, и т.д.
Поскольку здесь есть несколько хороших ответов об использовании типа, чтобы узнать, является ли такая команда, как cat
встроенной или внешней программой. Я собираюсь применить более общий подход. Есть некоторые команды, которые должны быть встроены, так как они влияют на текущую оболочку. Три классических примера: cd
, exec
и exit
. Есть некоторые команды, которые не должны быть встроены, так как их функциональность зависит от поведения execve или системных вызовов. Примерами таких программ являются su
, sudo
, calife
и super
. Все остальные команды могут быть построены как встроенные или как внешние программы. cat
является отличным примером программы этого класса, поскольку существуют оболочки, которые включают ее в качестве builtin, и оболочки, которые не включают ее. Стоит отметить, что многие команды этого класса, доступные в виде builtins, также доступны как внешние программы.
Ограничения являются разумной проблемой, и они должны быть определены последовательно. Можно определить ограниченную оболочку для пользователя как оболочку по умолчанию .
Например, установка /bin/rksh
(ограниченная оболочка) вместо предварительно определенной оболочки пользователя в качестве оболочки по умолчанию для этого пользователя в /etc/profile
.
ПРИМЕЧАНИЕ: если исполняемый файл с таким именем не существует в системе, то создайте жесткую ссылку ln/bin/ksh/bin/rksh
и ksh
по своему имени определит, является ли он ограниченным или нет.
ограниченная оболочка (например) запретить выполнение команды cd
или указать команду с помощью команды /
(явный путь) в вызове и запрещает изменение переменной PATH
, SHELL
или ENV
, а также запрещает перенаправление выходных данных.
Вы можете предоставить предопределенные сценарии оболочки пользователю, которые (под управлением реализаторов сценариев!) позволят пользователю запускать эти сценарии в неограниченной среде.
-121--15648- Он не жалуется на сам файл /etc/init.d/supervisor
, но, скорее всего, на файл, который он хочет выполнить как - обычно оболочка, которая появляется в строке shebang в этом файле. Это несколько вводящая в заблуждение ошибка, которую я видел много раз раньше.
Другие уже ответили о cat
, я просто хотел бы объяснить проблему echo
. При использовании опции -a
типа (перечислить все совпадения) будет видно, что echo
является и компоновкой оболочки , и внешней программой:
$ type -a echo
echo is a shell builtin
echo is /bin/echo
Эти два элемента полностью независимы друг от друга. тип
без параметров просто возвращает первую найденную соответствующую команду. Таким образом, тип foo
покажет, что будет выполнено при выполнении foo
. Могут быть и другие варианты, но они не будут отображаться, если не использовать -a
.
cat хешируется (/ bin / cat)
аналогично cat is / bin / cat
(то есть это внешняя программа ).
Разница в том, что вы уже запускали cat
в этом сеансе, поэтому bash уже просмотрел его в $ PATH
и сохранил полученное местоположение в хеш-таблице, чтобы это не было ' Мне не придется снова искать это в этом сеансе.
Чтобы увидеть все команды, которые были хешированы в вашем сеансе, запустите hash
$ hash
hits command
2 /usr/bin/sleep
3 /usr/bin/man
$ type sleep
sleep is hashed (/usr/bin/sleep)
$ type man
man is hashed (/usr/bin/man)
$ type ls
ls is /usr/bin/ls
$ type cat
cat is /usr/bin/cat
$ type echo
echo is a shell builtin
Другой способ проверить список встроенной оболочки: использовать compgen
, который сам является встроенной оболочкой!
Следующая команда перечисляет все встроенные команды оболочки:
compgen -b
Вы можете проверить cat
, echo
, набрав команду greping, например: -
$ compgen -b | grep echo
echo
$ compgen -b | grep cat
$
Вы можете увидеть compgen -b | grep cat
возвращает без вывода, это означает, что cat
не является встроенной командой оболочки .
Посетите список полезных опций, предоставленных compgen
.
Вы также можете использовать встроенную команду друг друга: help
для отображения встроенной команды оболочки.
$ help help
help: help [-dms] [pattern ...]
Display information about builtin commands.