Como membro desta comunidade, muitas vezes não vejo pessoas desconsiderando os bashisms para coisas que visam o bash. Quando se fala em portabilidade, os GNUisms são muito piores que os bashisms. Contanto que você use bash
para seu shebang, você pode esperar que o script seja executado usando bash
. No entanto, você não pode garantir a versão, a menos que você verifique explicitamente. O Bash versão 4 trouxe alguns recursos úteis, como matrizes associativas, mas o Bash v3 ainda é amplamente usado no OS X e no RHEL 5.
what types of scripts should be as portable as possible?
Isso é mais sobre suas necessidades e o que você escolhe para apoiar como desenvolvedor. Se você estiver escrevendo um script de instalação para um aplicativo que suporte todos os tipos de * NIX, a portabilidade será muito importante.
how common are systems that do not have Bash installed?
O FreeBSD e o Solaris 10 são exemplos de sistemas que não vêm com o bash instalado por padrão. A maioria dos sistemas Linux o terá, com exceção dos sistemas embarcados.
if the system has Bash installed, will it also have the GNU version of find and other utilities?
Não, e esse é o verdadeiro problema da portabilidade. Se a portabilidade é importante, você deve usar somente recursos de comando de shell que são definidos pelo padrão POSIX. Os utilitários GNU podem ser instalados em sistemas não-GNU, como o FreeBSD, mas é improvável que sejam os primeiros no PATH, e você não pode confiar nessas ferramentas para serem instaladas.