Я действительно новичок в использовании терминала, и я слепо следовал руководству, не зная, почему он там и что он делает ... хотя эти руководства помогают мне в установке плеера vmware.
этот сработал для меня, так как я сделал исполняемый файл, щелкнул файл и запустил ... только сказал, что нужен root-доступ.
sudo sh vmwareplayer.txt
(переименован, чтобы быть короче)
Почему-то я знаю, что sudo
делает, но что делает sh
? Без этого он идет "vmwareplayer.txt не найден". А для файлов комплекта почему он заканчивается .txt?
command-line
Габино Гарсия
источник
источник
sh
делает в команде, которая вызывает скрипт. Этот вопрос о том, как#!
работает внутри файла сценария . Абсолютно другой.Ответы:
sh обозначает «shell», а shell - старый интерпретатор командной строки, похожий на Unix. Интерпретатор - это программа, которая выполняет конкретные инструкции, написанные на языке программирования или сценариев. В общем, вы говорите: «Запустите этот файл для меня».
Вы должны понимать, что Linux на самом деле не смотрит на расширение файла, чтобы определить, что это за файл (или программа). Так что, пока содержимое этого файла написано так, как его понимает интерпретатор sh, оно будет работать. Но просто для удобства чтения такие файлы обычно имеют расширение .sh, и я понятия не имею, о чем думал разработчик, когда дал этому файлу расширение .txt.
источник
В Ubuntu
sh
или/bin/sh
просто указывает наdash
.sh
должен запускать интерпретатор команд по умолчанию, который предназначенdash
для Ubuntu. 1dash
относится к оболочке Debian Almquist.Оболочка является интерпретатором командной строки для системы. Есть несколько других оболочек, таких как
bash
,csh
иzsh
т. Д. Вот краткая выдержка из справочной страницыdash
:Есть много учебных пособий по оболочкам Linux, вы можете начать с этой статьи в Википедии .
Переходя к вашему вопросу, если вы пишете
sh file
,dash
выполняетfile
для вас.источник
Просто слово комментария:
sudo
выполняет команду сroot
привилегиями. При вызовеsudo vmwareplayer.txt
это явно означает «запустить команду vmwareplayer.txt с правами доступа root» и завершается ошибкой, потому что такой программы нет.sudo sh command
означает «выполнитьsh command
с правами root»и
sh command
выполнит команду под оболочкой Bourne.Новый вопрос возникает. Что такое снаряды? Это более длинный вопрос, и я думаю, вы найдете некоторую информацию в вики.
Между тем, помни,
man
это твой лучший друг.источник
Я полагаю, что ни один из более ранних респондентов не ответил на вопрос, который вы на самом деле задали Г., поэтому я попробую. Вставка
sh
при выполнении программы, как вы упоминали, выполняет программу в неинтерактивной подоболочке. Неинтерактивные оболочки ведут себя иначе (например, при инициализации ), чем стандартная интерактивная оболочка, которую вы использовали при запуске программы.Честно говоря, я не знаю, какой практический эффект это имеет. Как вы заметили,
sh vmwareplayer.txt
он (как правило) может выполнить что-то в той же папке, где просто набратьvmwareplayer.txt
(обычно) не удастся. Это должно сделать оболочку окружения; это не какое-то качество, присущее оболочке или подоболочке. Вы , конечно , можете непосредственно выполнить программу в текущем каталоге как корень:sudo ./vmwareplayer.txt
. По моему опыту, это всегда работает так же хорошо, какsudo sh vmwareplayer.txt
. Я надеялся, что кто-нибудь придет и объяснит, почему подоболочка иногда желательна.источник
sh
Утилита является команда интерпретатора языка / команда , которая выполняет команды чтения из строки командной строки, стандартного ввода или указанного файла. Приложение обеспечивает, чтобы выполняемые команды были выражены на языке, описанном в Shell Command Language.Например:
Следующее выполняет команду оболочки из строки:
sh -c "cat myfile.txt"
т.е. выполняет команду--cat myfile.txt
Обратитесь к следующей ссылке для более подробного объяснения: http://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html
источник