Більшість кодів, які я пишу, є в PHP. Нещодавно я почав вивчати сценарії оболонок. Більшість ресурсів та навчальних посібників, які я натрапила, стосуються Баша. Деякі попереджають про башизми, а деякі ні. Я багато читав тут і Stack Overflow.
Щоразу, коли у відповіді використовуються башизми , хтось неминуче коментує, щоб сказати:
Не слід використовувати <вставте сюди башизм>. Це не портативно.
Це трапляється навіть тоді, коли питання було позначене тегом bash. Для мене це як сказати програмісту PHP, що вони не повинні використовувати новий код у PHP 5, оскільки він не може бути використаний з PHP 4. Або сказати комусь, що він не повинен щось писати для Mac, оскільки його не можна використовувати на Windows.
Коли я пишу на PHP, я вибираю мінімальну вимогу і пишу код, сумісний вперед . Я не переживаю, щоб зробити це назад- сумісним.
Якщо я використовую #!/bin/bash
як шебанг, чому я не повинен використовувати башизми? Я починаю , щоб отримати враження , що деякі люди просто люблять Баш bashisms (каламбур) тільки заради цього.
Люди часто використовують bash
іshell
взаємозамінно - ймовірно, через те, що bash - це оболонка за замовчуванням у багатьох системах. Тож я можу зрозуміти додавання коментаря, щоб попередити, що код використовує башизми, але я не розумію, що неправильно використовувати їх.
Очевидно, що якщо я пишу сценарій виключно для особистого використання, я можу писати його будь-якою мовою. Але я хотів би подумати, що якийсь код, який я пишу, може бути корисним для інших.
Я намагався шукати відповідь на своє запитання перед публікацією. Я знайшов багато інформації про те , як випробувати для портативності, але не зміг знайти нічого про коли це важливо , щоб зробити це.
Отже, коли важливо писати портативні сценарії?
Наприклад,
- які сценарії повинні бути максимально портативними?
- наскільки поширені системи, на яких не встановлено Bash?
- якщо в системі встановлено Bash, чи буде вона також мати GNU версію пошуку та інших утиліт?
bash
тег поодинці, хтось коментує "Це башизм, а не портативний". Коли я відповідаю на тег C
, на якому позначено тег , мені все одно, чи він портативний Java
чи ні.
bash
специфічна функція, а не портативна, так само, як я зазначив, що для певної утиліти використовується специфічне розширення GNU (хоча питання було позначено як Linux). Я ніколи не бачив, щоб хтось сказав "це башизм, і ти ніколи не повинен цим користуватися".