Коли ви запускаєте його з bash test.sh
вами, ви прямо говорите bash завантажуватися та запускатися test.sh
. Файл потрібно лише прочитати, щоб “запустити” за допомогою цього методу. Але якщо ви просто запустите файл з ./test.sh
подібним, він не запуститься, оскільки файл не має явних дозволів на виконання; просто читайте permissons.
Значить, у першому випадку test.sh
завантажується bash
. Але самостійно системи Unix / Linux не запускають файли за замовчуванням. І раніше, якщо ви вилучите цей початковий #!/bin/bash
з нього ./test.sh
і спробуєте запустити його навіть з дозволами на виконання, він не запуститься, оскільки система не знатиме, що робити з командами під ним.
А якщо вам цікаво, поки файли автоматично не отримують дозволу на виконання при створенні? Ну, це довга розмова, але в основному щось подібне створить нову поверхню атаки у вашій системі. Якщо хтось може потрапити у вашу систему і просто виконати файли, записавши їх, це дуже велика проблема.