Estoy tratando de instalar VMware Workstation en mi Ubuntu 12.04.2 LTS. Si ejecuto el siguiente comando:
sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle
termina de una vez y la instalación nunca comienza.
Si ejecuto este comando:
sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle
El instalador se puede iniciar con éxito.
Por qué esto hace una diferencia?
Respuestas:
Si el archivo no está marcado como ejecutable, debe llamar a un intérprete de comandos para ejecutarlo.
Ejemplos:
sudo sh foo
abrirá foo con elsh
uso de privilegios de sudo .sudo bash foo
abrirá foo con elbash
uso de privilegios de sudo .sh foo
se abrirá foo consh
el uso de los privilegios del usuario.bash foo
se abrirá foo conbash
el uso de los privilegios del usuario.Si marca un archivo como ejecutable, solo necesita llamarlo
./foo
y, dado que está marcado como tal, se leerá con el intérprete de shell de comandos definido y se ejecutará sin la necesidad de definir uno.ls -F
enumerará archivos y marcará ejecutables con * .Para habilitar el bit de ejecución en un archivo (y hacerlo ejecutable como tal) use el comando
chmod +x foo
.En su caso, para hacer que el archivo que está utilizando sea ejecutable, entonces usaría el comando
chmod +x VMware-Workstation-9.0.1-894247.x86_64.bundle
y luego podrás ejecutarlo con
sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle
o simplemente escribiendosudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle
.fuente
Sh es un shell para ejecutar comandos, por lo que ejecutar sh con sudo le proporciona un shell raíz. Esto significa que todos los comandos en ese shell se ejecutan como root. Supongo que el script ejecuta otra cosa que necesita root, sin embargo, cuando solo usa sudo no sudo sh, esa otra cosa se ejecuta como un usuario normal, sin embargo, con sh todo se ejecutará como root.
fuente