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