o que a adição sh faz?

6

Sou muito novo no uso do terminal e tenho acompanhado o guia às cegas sem saber por que isso existe e o que ele faz ... embora esses guias me ajudem a instalar o vmware player.

este trabalhou para mim desde que o arquivo executável, clicando no arquivo e executar .. apenas dizer que o acesso root é necessário.

sudo sh vmwareplayer.txt (renomeou para ser mais curto)

De alguma forma, eu sei o que o sudo faz, mas o que o sh faz? Sem isso, vai "vmwareplayer.txt não encontrado". E para arquivos de pacote, por que termina com .txt?

    
por Gabino Garcia 03.03.2013 / 18:07

5 respostas

9

sh significa "shell" e shell é o antigo interpretador de linha de comando similar ao Unix. Um interpretador é um programa que executa instruções específicas escritas em uma linguagem de programação ou script. Então basicamente você diz "Execute esse arquivo para mim".

Você deve entender que o Linux realmente não olha para a extensão do arquivo para determinar qual é o arquivo (ou programa). Portanto, contanto que o conteúdo desse arquivo seja escrito de uma maneira que o interpretador sh entenda, ele funcionará. Mas apenas por uma questão de legibilidade, esses arquivos normalmente recebem uma extensão .sh e não tenho ideia do que o desenvolvedor estava pensando quando deu a esse arquivo uma extensão .txt.

    
por Gladen 03.03.2013 / 19:22
4

No Ubuntu, sh ou /bin/sh apenas aponta para dash . sh deve executar o interpretador de comandos padrão, que é dash para o Ubuntu. 1 dash refere-se ao shell do Debian Almquist.

Um shell é um interpretador de linha de comando para o sistema. Existem vários outros shells como bash , csh , zsh etc. Aqui está um breve trecho da man page de 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.
  

Existem muitos tutoriais sobre shells do Linux, você pode começar com este Artigo da Wikipédia .

Chegando à sua pergunta, se você escrever sh file , dash executará file para você.

    
por ignite 03.03.2013 / 18:54
1

Apenas uma palavra de comentário:

sudo executa um comando com root privileges. Quando você chama sudo vmwareplayer.txt que claramente significa "execute o comando vmwareplayer.txt com acesso root" e falha, porque não existe tal programa.

sudo sh command significa "executar sh command com privilégios de root"

e sh command executarão um comando no shell Bourne.

Nova pergunta surge. O que são conchas? Esta é uma pergunta mais longa e você encontrará algumas informações sobre o wiki, suponho.

Enquanto isso, lembre-se que man é seu melhor amigo.

    
por Melon 03.03.2013 / 19:24
1

Acredito que nenhum dos respondentes anteriores respondeu à pergunta que você realmente fez a G., então vou tentar. Interpõe o sh ao executar um programa como você mencionou, executa o programa em um subnível não interativo . Os shells não interativos se comportam de maneira diferente (por exemplo, inicialização ) do shell interativo padrão que você estava usando quando executou o programa.

Honestamente, não sei qual efeito prático isso tem. Como você percebeu, sh vmwareplayer.txt é (geralmente) capaz de executar algo na mesma pasta, onde simplesmente digitar vmwareplayer.txt (normalmente) não. Isso tem que fazer o ambiente shell; não é qualquer qualidade nativa para o shell ou subshell em si. É claro que você pode executar diretamente um programa no diretório atual como root: sudo ./vmwareplayer.txt . Na minha experiência, isso sempre funciona tão bem quanto o sudo sh vmwareplayer.txt . Eu estava esperando que alguém aparecesse e explicasse por que o subshell às vezes era desejável.

    
por Salt 03.03.2013 / 22:36
0

O utilitário sh é um interpretador de linguagem de comando / comando que executa comandos lidos a partir de uma cadeia de linha de comando, a entrada padrão ou um arquivo especificado. O aplicativo garante que os comandos a serem executados sejam expressos no idioma descrito em Shell Command Language.

Por exemplo:

O seguinte executa um comando shell de uma string: %código%  isto é, executa o comando-- sh -c "cat myfile.txt"

Consulte o seguinte link para uma explicação detalhada: link

    
por shivani1494 08.02.2015 / 09:59