Eu tenho que modificar scripts de shell existentes e eles começam com
#!/bin/sh
Por que motivo alguém usaria isso em um sistema que também suporta bash? Estou tentado a mudar isso, mas quero ter certeza de que não há uma razão que eu não conheça para isso.
Meu problema atual é com a manipulação de strings e o uso ${mystring:start:length}
seria tão fácil no bash, mas não seria útil no sh.
Responder1
Pode não ser óbvio hoje em dia, quando as distribuições Linux modernas são os sistemas operacionais mais comuns, mas há algum tempo você poderia encontrar não apenas vários sistemas que não tinham bash, mas pelo que me lembro, até mesmo uma distribuição Linux, que em uma de suas versões tinha /bin/bash vinculado a algum shell não semelhante ao Bourne.
Mover scripts #!/bin/bash de um sistema para outro era irritante naquela época, então era mais sensato criar scripts em bourne shell puro, sem bashisms.
Então a portabilidade foi o principal motivo, eu acho. Eu ainda uso #!/bin/sh se tiver certeza de que não haverá nenhum erro no script, embora já tenham se passado pelo menos dez anos desde que não há nada além do Linux ao meu redor.