что делает добавление sh?

Я действительно новичок в использовании терминала, и я слепо следовал руководству, не зная, почему он там и что он делает ... хотя эти руководства помогают мне в установке плеера vmware.

Это сработало для меня, так как я сделал файл исполняемым, щелкнул файл и запустил ... только сказал, что нужен root-доступ.

sudo sh vmwareplayer.txt (переименован, чтобы быть короче)

Как-то я знаю, что делает sudo, но что делает sh? Без этого он идет "vmwareplayer.txt не найден". А для файлов комплекта почему он заканчивается на .txt?

10
задан 3 March 2013 в 21:13

5 ответов

sh обозначает «shell», а shell - старый интерпретатор командной строки, похожий на Unix. Интерпретатор - это программа, которая выполняет конкретные инструкции, написанные на языке программирования или сценариев. Итак, в основном вы говорите «Запустите этот файл для меня».

Вы должны понимать, что Linux на самом деле не смотрит на расширение файла, чтобы определить, что это за файл (или программа). Так что, пока содержимое этого файла написано так, как его понимает интерпретатор sh, оно будет работать. Но просто для удобства чтения такие файлы обычно имеют расширение .sh, и я не знаю, о чем думал разработчик, когда дал этому файлу расширение .txt.

0
ответ дан 3 March 2013 в 21:13

Просто слово комментария:

sudo выполняет команду с root привилегиями. Когда вы вызываете sudo vmwareplayer.txt, это явно означает «запустить команду vmwareplayer.txt с правами доступа root» и завершается неудачей, потому что такой программы нет.

sudo sh command означает «выполнить sh command с правами суперпользователя»

и sh command выполнит команду в оболочке Bourne.

1111 Возникает новый вопрос. Что такое снаряды? Это более длинный вопрос, и я думаю, вы найдете некоторую информацию в вики.

Между тем, помните, man ваш лучший друг.

0
ответ дан 3 March 2013 в 21:13

В Ubuntu sh или /bin/sh просто указывает на dash. sh должен запускать интерпретатор команд по умолчанию, который для Ubuntu равен dash. 1 dash относится к оболочке Debian Almquist.

Оболочка является интерпретатором командной строки для системы. Есть несколько других оболочек, таких как bash, csh, zsh и т. Д. Вот краткая выдержка из справочной страницы dash:

 The shell is a command that reads lines from either a file or the termi‐
 nal, interprets them, and generally executes other commands.  It is the
 program that is running when a user logs into the system (although a user
 can select a different shell with the chsh(1) command).  The shell imple‐
 ments a language that has flow control constructs, a macro facility that
 provides a variety of features in addition to data storage, along with
 built in history and line editing capabilities.  It incorporates many
 features to aid interactive use and has the advantage that the interpre‐
 tative language is common to both interactive and non-interactive use
 (shell scripts).  That is, commands can be typed directly to the running
 shell or can be put into a file and the file can be executed directly by
 the shell.

Существует множество учебных пособий по оболочкам Linux, вы можете начать с этой статьи Википедии .

Возвращаясь к вашему вопросу, если вы напишите sh file, dash выполнит file для вас.

0
ответ дан 3 March 2013 в 21:13

Утилита sh - это интерпретатор командного языка / команда, которая выполняет команды, считанные из строки командной строки, стандартного ввода или указанного файла. Приложение гарантирует, что команды, которые должны быть выполнены, выражены на языке, описанном в Shell Command Language.

Например:

Следующее выполняет команду оболочки из строки: sh -c "cat myfile.txt" т.е. выполняет команду-- cat myfile.txt

Обратитесь к следующей ссылке для более подробного объяснения. : http://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html

0
ответ дан 3 March 2013 в 21:13

Я полагаю, что ни один из более ранних респондентов не ответил на вопрос, который вы на самом деле задали Г., поэтому я сделаю снимок. Вставка sh при выполнении программы, как вы упомянули, выполняет программу в неинтерактивной подоболочке. Неинтерактивные оболочки ведут себя иначе (например, инициализация ) по сравнению со стандартной интерактивной оболочкой, которую вы использовали при запуске программы.

Честно говоря, я не знаю, какой практический эффект это имеет. Как вы заметили, sh vmwareplayer.txt (обычно) может выполнять что-то в одной и той же папке, тогда как простой ввод vmwareplayer.txt (обычно) не позволяет. Это должно сделать оболочку окружения; это не какое-то качество, присущее оболочке или подоболочке. Конечно, вы можете напрямую запустить программу в текущем каталоге как root: sudo ./vmwareplayer.txt. По моему опыту, это всегда работает так же хорошо, как и sudo sh vmwareplayer.txt. Я надеялся, что кто-нибудь придет и объяснит, почему подоболочка иногда бывает желательна.

0
ответ дан 3 March 2013 в 21:13

Другие вопросы по тегам:

Похожие вопросы: