Eu sou realmente novo no uso do terminal e tenho seguido o guia cegamente, sem saber por que existe e o que ele faz .. embora esses guias me ajudem a instalar o vmware player.
este funcionou para mim desde que tornou o arquivo executável, clique no arquivo e execute ... apenas diga que o acesso root é necessário.
sudo sh vmwareplayer.txt
(renomeou para ser mais curto)
De alguma forma eu sei o que sudo
faz, mas o que sh
faz? Sem ele aparece "vmwareplayer.txt não encontrado". E para arquivos em pacote, por que termina com .txt?
command-line
Gabino Garcia
fonte
fonte
sh
faz em um comando que chama um script. Essa pergunta é sobre como#!
funciona em um arquivo de script . Totalmente diferente.Respostas:
sh significa "shell" e shell é o antigo interpretador de linha de comando do Unix. Um intérprete é 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 analisa a extensão do arquivo para determinar qual é o arquivo (ou programa). Contanto que o conteúdo desse arquivo seja escrito de uma maneira que o intérprete sh entenda, ele funcionará. Mas, apenas por questões de legibilidade, esses arquivos normalmente recebem uma extensão .sh e não tenho idéia do que o desenvolvedor estava pensando quando atribuiu a ele uma extensão .txt.
fonte
No Ubuntu,
sh
ou/bin/sh
apenas aponta paradash
.sh
deve executar o interpretador de comando padrão, que édash
para o Ubuntu. 1dash
refere-se ao shell Debian Almquist.Um shell é um intérprete de linha de comando para o sistema. Existem várias outras conchas como
bash
,csh
,zsh
etc. Aqui está um breve trecho da página man dedash
:Existem muitos tutoriais sobre shells do Linux, você pode começar com este artigo da Wikipedia .
Chegando à sua pergunta, se você escrever
sh file
,dash
executafile
para você.fonte
Apenas uma palavra de comentário:
sudo
executa um comando comroot
privilégios. Quando você liga, osudo vmwareplayer.txt
que significa claramente "executar o comando vmwareplayer.txt com acesso root" e falha, porque não existe esse programa.sudo sh command
significa "executarsh command
com privilégios de root"e
sh command
executará um comando no shell Bourne.Nova pergunta surge. O que são conchas? Essa é uma pergunta mais longa e você encontrará algumas informações no wiki, suponho.
Enquanto isso, lembre-se
man
é seu melhor amigo.fonte
Acredito que nenhum dos respondentes anteriores respondeu à pergunta que você realmente fez a G., então vou tentar. A interposição de
sh
quando um programa é executado, como você mencionou, executa o programa em um subshell 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 que efeito prático isso tem. Como você notou,
sh vmwareplayer.txt
é (geralmente) capaz de executar algo na mesma pasta, onde simplesmente digitarvmwareplayer.txt
(geralmente) não será. Isso tem que fazer com o ambiente shell; não é nenhuma qualidade nativa do próprio shell ou subshell. Pode, claro, executar diretamente um programa no diretório atual como root:sudo ./vmwareplayer.txt
. Na minha experiência, isso sempre funciona tão bem quantosudo sh vmwareplayer.txt
. Eu esperava que alguém aparecesse e explicasse por que o subshell às vezes era desejável.fonte
O
sh
utilitário é um intérprete da linguagem de comandos / um comando que executa comandos lidos a partir de uma cadeia de linhas de comandos, da entrada padrão ou de um arquivo especificado. O aplicativo garante que os comandos a serem executados sejam expressos no idioma descrito em Shell Command Language.Por exemplo:
A seguir, um comando shell
sh -c "cat myfile.txt"
é executado a partir de uma string: ou seja, executa o command--cat myfile.txt
Consulte o seguinte link para obter uma explicação detalhada: http://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html
fonte