Para testar alguns scripts 1 em tantos ambientes quanto possível, configurei várias VMs com UNIX (ou sistemas operacionais semelhantes a Unix):
- Linux
- Solaris
- OS X 2
- FreeBSD
Eu assumo, porém, que em muitos aspectos é realmente mais importante testar usando versões diferentes de cada shell com as quais eu planejo me preocupar, do que testar usando sistemas operacionais diferentes.
Como eu prefiro não ter minhas VMs multiplicadas em permutações aparentemente infinitas, gostaria de instalar várias versões de cada shell em qualquer VM específica. Por exemplo, se eu testar em [:bash,:zsh,:fish,:ksh,:csh,:tcsh,:sh,:dash,:ash]
, então eu tenho 9 shells, e se você assumir que eu estou testando uma média de 3 versões de cada, então eu tenho mais de 100 VMs:
# operating_systems * shells * shell_versions
4 * 9 * 3
Existe alguma maneira prática de instalar e usar várias versões de um determinado shell em uma única máquina ou máquina virtual? Posso (por exemplo) instalar o Bash 1, o Bash 2, o Bash 3 e o Bash 4 em uma VM Linux?
Eu percebo que
- algumas combinações são menos importantes e provavelmente podem ser ignoradas, e
- Por fim, gostaria de testar várias versões de cada sistema operacional também
mas essas são realmente separadas dessa questão, então estou colocando essas questões de lado para considerar se isso é possível:
Então: existe alguma maneira prática de instalar e usar várias versões de um determinado shell em uma única máquina?
1 Eu estou usando o termo "script" vagamente. Uma das primeiras coisas que quero testar é algo que será originado pelos arquivos rc
do seu shell, seja .zshrc
, .bash_profile
, ou o que for, para que não tenha sua própria linha de shebang. Daí o desejo de fazer um pouco de código funcionar em vários shells. Outras coisas que seriam úteis através de shells seriam funções e aliases que eu gostaria de usar em máquinas diferentes, embora eles não necessariamente tenham o meu shell favorito (Z Shell), mas podem me fazer usar Bash ou Korn. Também quaisquer trechos úteis que eu possa querer usar em scripts de shell em várias máquinas, mesmo quando não posso colocar meu shell favorito na linha shebang.
2 Nota totalmente tangencial, incluída apenas para não dizer nada enganosa: na verdade, não consegui configurar o OS X VM, já que isso é um incômodo, mas Eu espero, e incluí-lo na lista, então ninguém diria "Ei! Por que você não está incluindo o OS X!?"