Хотя это не выбирает интерпретатор в сценарии оболочки (он выбирает его для каждой машины), это более простая альтернатива, если у вас есть административный доступ ко всем машинам, на которых вы пытаетесь запустить сценарий. на.
Создайте символическую ссылку (или жесткую ссылку, если необходимо), чтобы указать на нужный путь интерпретатора. Например, в моей системе perl и python находятся в /usr/bin:
cd /bin
ln -s /usr/bin/perl perl
ln -s /usr/bin/python python
создаст символическую ссылку, позволяющую разрешать хеш-банг для /bin/perl и т. д. Это также сохраняет возможность передавать параметры сценариям.
Что будет обрабатывать сигнал, встроенная программа или bash?
Программа встроенной команды — bash. Это определение встроенной программы: она встроена в оболочку, а не является внешней программой.
Оболочка может реагировать по-разному в зависимости от того, что она делает, когда получает сигнал. Но сигнал всегда получает процесс оболочки, поскольку в него не вовлечен ни один другой процесс.