Лучшая практика такова:
#!/usr/bin/env bash
#!/usr/bin/env sh
#!/usr/bin/env python
И так далее ...
Когда Ubuntu впервые начал использовать тире, некоторые скрипты сломались. Об этом шла дискуссия. Большинство скриптов были написаны #!/bin/sh, что было ссылкой на / bin / bash. Консенсус таков: автор сценария отвечает за указание интерпретатора. Поэтому, если ваш сценарий всегда должен быть вызван с помощью BASH, укажите его из среды. Это позволяет вам угадать путь, который отличается от разных систем Unix / Linux. Кроме того, он будет работать, если завтра / bin / sh станет ссылкой на другую оболочку, например / bin / wthsh или какую-то другую бессмысленность.