Je suis en train d'installer VMware Workstation dans mon Ubuntu 12.04.2 LTS. Si j'exécutez la commande suivante:
sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle
il se termine à la fois et l'installation ne démarre jamais.
Si j'exécute cette commande:
sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle
Le programme d'installation peut être lancé avec succès.
Pourquoi cela fait une différence?
Réponses:
Si le fichier n'est pas marqué comme exécutable, vous devez appeler un interpréteur de commandes pour l'exécuter.
Exemples:
sudo sh foo
ouvrira foo ensh
utilisant les privilèges sudo .sudo bash foo
ouvrira foo enbash
utilisant les privilèges sudo .sh foo
ouvrira foo ensh
utilisant les privilèges de votre utilisateur.bash foo
ouvrira foo enbash
utilisant les privilèges de votre utilisateur.Si vous marquez un fichier comme exécutable, il vous suffit de l'appeler avec
./foo
et parce qu'il est marqué comme tel, il sera lu avec l'interpréteur de commandes défini et exécuté sans qu'il soit nécessaire d'en définir un.ls -F
listera les fichiers et marquera les exécutables avec * .Pour activer le bit d'exécution sur un fichier (et le rendre exécutable en tant que tel), utilisez la commande
chmod +x foo
.Dans votre cas, pour rendre le fichier que vous utilisez exécutable, vous utiliserez alors la commande
chmod +x VMware-Workstation-9.0.1-894247.x86_64.bundle
et vous pourrez ensuite l'exécuter avec
sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle
ou simplement en tapantsudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle
.la source
Sh est un shell pour exécuter des commandes, donc exécuter sh avec sudo vous donne un shell racine. Cela signifie que toutes les commandes de ce shell sont exécutées en tant que root. Je suppose que le script exécute quelque chose d'autre qui a besoin de root, cependant quand vous n'utilisez que sudo pas sudo sh, que quelque chose d'autre est exécuté en tant qu'utilisateur normal, mais avec sh tout sera exécuté en tant que root.
la source