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?
Respostas:
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 foo
abrirá foo com osh
uso de privilégios sudo .sudo bash foo
abrirá foo com obash
uso de privilégios sudo .sh foo
abrirá foo comsh
uso de privilégios do usuário.bash foo
abrirá foo combash
uso de privilégios do usuário.Se você marcar um arquivo como executável, basta chamá-lo
./foo
e, por estar marcado como tal, será lido com o interpretador de shell de comando definido e executado sem a necessidade de definir um.ls -F
listará 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.bundle
ou apenas digitandosudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle
.fonte
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.
fonte