Я пытаюсь установить VMware Workstation в свою Ubuntu 12.04.2 LTS. Если я выполню следующую команду:
sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle
он заканчивается сразу, и установка никогда не начинается.
Если я выполню эту команду:
sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle
Установщик может быть успешно запущен.
Почему это имеет значение?
Ответы:
Если файл не помечен как исполняемый, вам необходимо вызвать интерпретатор командной оболочки для его выполнения.
Примеры:
sudo sh foo
откроет foo сsh
использованием привилегий sudo .sudo bash foo
откроет foo сbash
использованием привилегий sudo .sh foo
откроет foo сsh
использованием привилегий вашего пользователя.bash foo
откроет foo сbash
использованием привилегий вашего пользователя.Если вы пометили файл как исполняемый, вам просто нужно вызвать его,
./foo
и, поскольку он помечен как таковой, он будет прочитан с помощью определенного интерпретатора командной оболочки и выполнен без необходимости его определения.ls -F
отобразит список файлов и пометит исполняемые файлы * .Чтобы включить бит выполнения для файла (и сделать его исполняемым как таковой), используйте команду
chmod +x foo
.В вашем случае, чтобы сделать файл, который вы используете, исполняемым, вы должны использовать команду
chmod +x VMware-Workstation-9.0.1-894247.x86_64.bundle
и тогда вы сможете запустить его либо с
sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle
или просто набравsudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle
.источник
Sh - это оболочка для запуска команд, поэтому выполнение sh с помощью sudo дает вам корневую оболочку. Это означает, что все команды в этой оболочке выполняются от имени пользователя root. Я предполагаю, что скрипт выполняет что-то еще, что требует root, однако, когда вы используете только sudo, а не sudo sh, что-то еще выполняется как обычный пользователь, однако с sh все будет выполняться как root.
источник