Já vi em vários lugares, incluindo recomendações neste site ( qual é o Bash shebang preferido? ), Para usar #!/usr/bin/env bashpreferencialmente #!/bin/bash. Eu já vi um indivíduo empreendedor sugerir usando#!/bin/bash estava errado e a funcionalidade do bash seria perdida ao fazer isso.
Tudo isso dito, eu uso o bash em um ambiente de teste rigidamente controlado, onde cada unidade em circulação é essencialmente um clone de uma única unidade mestre. Entendo o argumento da portabilidade, embora não seja necessariamente aplicável no meu caso. Existe algum outro motivo para preferir #!/usr/bin/env bashas alternativas e, assumindo que a portabilidade era uma preocupação, existe algum motivo para usá-lo que poderia quebrar a funcionalidade?
envpode não estar localizado em /usr/bin. Comentários Shebang são completamente uma má idéia IMHO. Se o seu interpretador de script padrão não manipular comentários shebang, é apenas um comentário. No entanto, se você sabe que o intérprete de script pode lidar com comentários shebang e você conhece o caminho para o bash, não há razão para não invocá-lo usando seu caminho absoluto, a menos que o caminho seja muito longo (improvável) ou você possa portar o script para um sistema que não possui bash localizado em / bin. Por outro lado, as advertências que mencionei anteriormente se aplicam nesse caso, pois envolve portabilidade.
/etcou /bin/sh. bashé um complemento para a maioria dos sistemas similares ao Unix. É apenas o Linux onde bashé garantido estar /bine provavelmente também está vinculado como /bin/sh. Desde que o Linux se tornou o moderno Unix de fato para muitas pessoas, o fato de outros sistemas que não o Linux existirem foi esquecido. Na minha própria resposta abaixo, assumi o Linux porque você disse bash. Muitas das caixas BSD com as quais trabalhei nem sequer a instalaram.
/bin/bash. O Bash não está instalado por padrão. Se você quiser, você precisa pkg install bash. Uma vez instalado, ele está localizado em /usr/local/bin/bash. Não há nada instalado no /bin/bashOpenBSD. Um shebang de #!/bin/bashvontade de erro, e #!/usr/bin/env bashterá sucesso.