Почему мой файл сценария является исполняемым файлом на виртуальной машине?

Мне установили человечность на виртуальной машине в Windows. Там, когда я запускаю скрипт, я просто ввожу sudo ./blabla.sh в терминале для выполнения его.

Затем я установил человечность из того же файла ISO непосредственно на ноутбуке, таким образом, это не виртуальная машина.

Когда я запускаю тот же скрипт: sudo ./blabla.sh, это говорит что команда, не найденная. Затем, если я делаю chmod +x blabla.sh затем я могу выполнить его.

Почему там это различие между двумя?

1
задан 4 May 2015 в 00:49

1 ответ

sudo потребности по крайней мере один выполняет набор битов для выполнения файла, т.е. необходимо установить выполнить бит (по крайней мере), для пользователя или группы или других. Если не выполняются, бит установлен, Вы не можете выполнить файл как sudo ./script.

Этот пример ясно даст понять Вас:

$ ls -l test_scr 
-rw-rw-r-- 1 user user 30 May  4 03:50 test_scr

$ sudo ./test_scr
sudo: ./test_scr: command not found

$ ./test_scr
bash: ./test_scr: Permission denied

$ chmod u+x test_scr 

$ sudo ./test_scr
Hello world

$ ./test_scr
Hello world

Также примечание, что Вы не должны делать исполняемый файл файла, можно петлять как аргумент двоичному файлу оболочки для выполнения его:

$ bash test_scr 
Hello world

$ sudo bash test_scr 
Hello world
0
ответ дан 2 August 2019 в 19:53

Другие вопросы по тегам:

Похожие вопросы: