Qual é a diferença entre 'sudo [command]' e 'sudo sh [command]?

13

Estou tentando instalar o VMware Workstation no meu Ubuntu 12.04.2 LTS. Se eu executar o seguinte comando:

sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle

termina imediatamente e a instalação nunca é iniciada.

Se eu executar este comando:

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle

O instalador pode ser iniciado com sucesso.

Por que isso faz diferença?

Landy
fonte
relacionado também: askubuntu.com/questions/70534/…
Nanne

Respostas:

13

Se o arquivo não estiver marcado como executável, você precisará chamar um interpretador de shell de comando para executá-lo.

Exemplos:

  • sudo sh fooabrirá foo com o shuso de privilégios sudo .

  • sudo bash fooabrirá foo com o bashuso de privilégios sudo .

  • sh fooabrirá foo com shuso de privilégios do usuário.

  • bash fooabrirá foo com bashuso de privilégios do usuário.

Se você marcar um arquivo como executável, basta chamá-lo ./fooe, por estar marcado como tal, será lido com o interpretador de shell de comando definido e executado sem a necessidade de definir um.

ls -Flistará arquivos e marcará executáveis ​​com * .

Para ativar o bit de execução em um arquivo (e torná-lo executável como tal) usar o comando chmod +x foo.

No seu caso, para tornar o arquivo que você está usando executável, você usaria o comando

chmod +x VMware-Workstation-9.0.1-894247.x86_64.bundle

e então você poderá executá-lo com

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundleou apenas digitando sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle.

Bruno Pereira
fonte
12

Sh é um shell para executar comandos, portanto, executar sh com sudo fornece um shell raiz. Isso significa que todos os comandos nesse shell são executados como raiz. Meu palpite é que o script executa outra coisa que precisa de raiz, no entanto, quando você usa apenas sudo não sudo sh, que outra coisa é executada como um usuário normal, no entanto, com sh, tudo será executado como raiz.

w4etwetewtwet
fonte
Obrigado pela sua resposta. Minha reputação é inferior a 15, por isso não posso votar na sua resposta. Mas ... Obrigado!
quer
1
A resposta aceita tem mais detalhes, mas acho que esse é realmente um ponto-chave do qual as pessoas devem estar cientes.
Christopher Hunter