Я искал разницу между adduser
и useradd
, и объяснение в том, что useradd
это команда, в то время adduser
как Perl-скрипт. Я понимаю, что такое Perl-скрипт, но я не понимаю, что это command
такое.
Я всегда думал, что такие команды, как ls
, ln
и cd
т. Д., Все простые программы, написанные на любом языке, которые просто делают одну вещь. В чем разница между этими "простыми программами" и сценарием perl?
Я, конечно, знаю, что (perl) скрипт не компилируется, а интерпретируется во время выполнения, но я думаю, что это не единственная разница?
linux
command-line
bash
perl
kramer65
источник
источник
Ответы:
Проще говоря, команда - это инструкция (или набор инструкций), выполняемая компьютером.
Автономные команды
Фундаментальные утилиты Unix, такие как
ls
,ln
и т. Д. (Обычно) написаны на C и скомпилированы для того, чтобы быть автономными исполняемыми программами , для которых не требуется выполнение интерпретатора; они обычно требуют, чтобы определенные библиотечные файлы были установлены в системе, но это ответ на другой вопрос.Сценарии
Сценарий - это набор команд, и фактически сами сценарии считаются командой.
Perl скрипт представляет собой последовательность операторов Perl и требует
perl
исполняемой (автономной и компилируются) программы для интерпретации заявления Perl.Иногда большие и сложные интерпретирующие сценарии (в таких языках, как Perl, Python и Ruby) также называют интерпретируемыми программами, в то время как термин сценарий зарезервирован для более коротких и простых сценариев.
Сценарий оболочки представляет собой последовательность других команд (любой тип команды) , и это требует Unix оболочки , такие как Bash интерпретировать сценарий. Со страницы руководства Bash:
Встроенные оболочки
Оболочки обычно имеют встроенные команды, которые не являются ни автономными программами, ни скриптами. Вместо этого они являются частью самой оболочки и запускаются непосредственно оболочкой.
cd
это пример такой встроенной команды.Иногда существуют команды, которые существуют как встроенные в оболочку и как отдельные команды одновременно, например,
echo
команда.echo
самостоятельно выполняет встроенную оболочку, а отдельную команду можно выполнить, указав полный путь к ней.Запустите встроенную версию echo:
Запустить автономную
echo
программу:Примечание. Приведенные выше особенности относятся к среде Unix, но те же принципы применимы к среде Windows.
источник
.bat
файлами много-много лет).Встроенная команда является частью оболочки. Программа выполняется оболочкой.
http://www.gnu.org/software/bash/manual/bashref.html#Shell-Builtin-Commands
источник
useradd
это не встроенная оболочка. На сайте просто сказано «команда», а не «встроенная команда». Насколько это объяснение относится к этому вопросу?Команда просто означает, что приложение или система должны что-то делать.
Приложение обычно принимает много различных команд, либо из графического интерфейса пользователя,
stdin
но возможны и другие методы, например, сокет UNIX или именованный канал, какой-то веб-API, RPC-соединение или какой-либо другой пользовательский протокол.Приложение, которое выполняет только одно, а затем завершает работу, обычно без графического интерфейса, также можно назвать командой, потому что вы действительно можете «дать» этому приложению только одну значимую «команду». Вот как
ls
работают такие маленькие программы и почему они называются командами.Но вы не назвали бы Photoshop командой, но вы наверняка бы дали команды внутри нее через графический интерфейс.
Тем не менее, термин может означать разные вещи для разных людей. В вашем примере команда используется для описания исполняемого файла, который запускается напрямую, в отличие от файла, для работы которого требуется интерпретатор сценариев. Различие может быть важным, потому что когда вы запускаете Perl-скрипт, это исполняемый
/usr/bin/perl
файл, который на самом деле выполняется (поэтому, если вы хотите уничтожить долго работающий Perl-скрипт, это то, что вам нужно искатьps
). Однако большинство оболочек имеют «встроенные» команды, которые являются командами самой оболочки и не запускают внешний исполняемый файл. Например,cd
обрабатываетсяbash
сам по себе и не вызывает/sbin/cd
или подобный.источник