Kommentarer
-  Det handler egentlig om hvor bærbar du vil være . Bare Unixes? Alle Linux-kjernebaserte bokser? Alle systemer til og med gamle Win 3.0 og VMS (tuller)? 
/bin/sher vanligvis et godt minimum, bare vær oppmerksom på atshikke erbash.. forvent på de fleste GNU / Linux -systemer. - Selv om Android bruker linux-kjernen og standardskallet er avledet fra bash via aske, er brukerlandet ikke veldig unix-aktig og mangler mange standardverktøy.
 
Svar
 For bærbarhet kan du trygt anta at #!/bin/sh vil finne et stort sett POSIX-kompatibelt skall på ethvert standard Unix- eller Linux-system, men det handler egentlig om det. 
 I FreeBSD, OpenBSD og NetBSD ( sammen med DragonFly, PC-BSD og noen andre derivater) ligger bash på /usr/local/bin/bash (hvis den er installert), så /usr/bin/env tilnærming gir bærbarhet mellom Linux og BSD. 
 Android er ikke et standard Unix- eller Linux-system. På min ikke-rotte Android-telefon er ingen av /usr/bin/env, /bin/bash o selv /bin/sh eksisterer, og systemskallet er /system/bin/sh. 
 Et skallskript som mangler #! (shebang) vil prøve å kjøre i skallet som kalte det på noen systemer, eller kan bruke en annen standardtolk (for eksempel /bin/bash) , på andre systemer. Og selv om  dette  fungerer i Android, fungerer det ikke garantert i andre operativsystemer, der brukere kan velge å bruke et interaktivt skall som ikke er bash. (Jeg bruker tcsh i FreeBSD, hvor det er standardskallet, og shebang-mindre skript tolkes av det kallende skallet.) 
Så fra hvor jeg sitter ser det ut som det er ikke mulig å lage et skallskript som er bærbart mellom Android- og ikke-Android-systemer (Linux eller Unix), fordi Android gjør ting annerledes.
Kommentarer
-  Etter min erfaring skal 
/bin/shpeke på noe mer sombshellerdashennbash, som er relativt oppblåst og dermed foretrukket for interaktiv bruk. -  Noen få feil her inne. Det er fortsatt mange (for det meste kommersielle) Enheter her (de fleste av dem Solaris 10 og før) der 
/bin/sher Bourne Shel l, ikke et POSIX-skall, POSIX spesifiserer ikke ' t banen tilsh. De fleste skjell (ogexecp/env/find -exec...) vil tolke en she-bang- mindre skript med systemet ' ssh, få tolker det med seg selv, og når de gjør det, gjør de det i POSIX-kompatibilitetsmodus. At ' er standard / POSIX-måten å kjøre skript på, men det antar at den som ringer er i et POSIX-miljø . -  Angående  * BSD  
basher valgfritt. Det betyr at det er gode sjanser for at selv/usr/local/bin/bashikke eksisterer på systemene (for ikke å nevne proprietære systemer som Solaris, AIX eller HP-Ux). - @ StephaneChazelas – re POSIX, jeg er selvfølgelig enig, og at ' er hvorfor ordene jeg brukte var " for det meste POSIX-kompatible ". Men dette spørsmålet handlet om bærbarhet, snarere enn hvor man finner POSIX, og man kan ' ikke stole på at et skall alltid blir funnet på ett sted. Når det gjelder standardtolk, blir et shebang-mindre skript som kjøres i tcsh tolket av tcsh på FreeBSD. Det er tydeligvis ' s inkonsekvens der også, så jeg ' har oppdatert svaret tilsvarende.
 - @Ouki – ja selvfølgelig, jeg tenkte bare ikke ' det var relevant for spørsmålet. Men jeg ' har lagt til den avklaringen til svaret for tydelighetens skyld.
 
Svar
 Etter min erfaring har #!/bin/sh og #!/bin/bash alltid endt opp med å finne det rette miljøet på de få systemene jeg har jobbet med . Jeg skal ennå møte et unntak. Jeg synes også det blir brukt rutinemessig i shell scripting-relaterte tekster som jeg antar er skrevet med tanke på bærbarhet på grunn av mangfoldig publikum. 
 Kan ikke si det samme med #!/usr/bin/env.Noen systemer har den installert som #!/bin/env og har ødelagt python-skriptene mine tidligere. Så, jeg vil gå med den andre kula. 
Her er noen støtte for utsagnet mitt ovenfor:
På CentOS utgivelse 5.7 får jeg følgende:
$ which env /bin/env 
På Ubuntu 12.04 Presis Pangolin:
$ which env /usr/bin/env 
 I tillegg, i det minste i ett eldre system, husker jeg administratorene installert coreutils på /opt av en eller annen grunn (kan ikke være en god praksis). Siden env er en del av coreutils, brukerne endte med å få det til /opt/coreutils/bin/env. Riktignok har jeg ikke brukt alle systemene der ute, så svaret er basert på min begrensede erfaring. 
/bin/bashdefinitivt ikke FreeBSD (ville vær/usr/local/bin/bashda bash ikke er en del av standardskjellene./usr/bin/env(SCO som er barel y eksisterende, NextStep som er alt annet enn utryddet – pluss selvfølgelig de vanligste ikke-unix-systemene som Android eller Windows). På den annen side eksisterer/bin/bashstort sett bare på ikke-innebygd Linux./bin/sher et sikkert spill på alle unix, men noen eldre systemer har et ikke-POSIX Bourne-skall der.which envisn ' t relevant: det er ganske mange systemer der/usr/biner en symlink til/bineller omvendt, noe som gjør begge/usr/bin/envog/bin/envkan brukes. Det som betyr noe er at/usr/bin/enver til stede, noe som er tilfelle på alle Linux-distribusjoner jeg ' noensinne har sett eller hørt om (og fjernet det ville ødelegge så mange ting at ingen ville gjøre det).