This is probably a very silly question, but what is the correct shebang for macOS shell scripts?
#!/bin/zsh
- or
#!/usr/bin/zsh
- or
#!/usr/bin/env zsh
?
This is probably a very silly question, but what is the correct shebang for macOS shell scripts?
#!/bin/zsh
#!/usr/bin/zsh
#!/usr/bin/env zsh
?This is the best one because others can run the file if their zsh is in a different location than yours.
I have two zsh installations on my Mac:
âžś where zsh
/opt/homebrew/bin/zsh
/bin/zsh
The first is manually installed by me using Homebrew; the second is the one included in macOS.
Damm, I always leave off that final “?”!
Many thanks, cornchip!
And is usr/
required? That is, is it correct to say that it must be exaclty #!/usr/bin/env zsh
and not #!/bin/env zsh
?
It should be /usr/bin/env
. You can type /usr/bin/env into terminal to see all the paths it’ll be searching.
I’m intrigued to know what makes /usr/bin/env
universal, but not /usr/bin/zsh
?
In my Unix experience, every time you switch to a different flavour, stuff has a habit of being somewhere else. Is /usr/bin/env
at least a POSIX standard?
As far as I can see from searching, it isn’t a POSIX standard. It’s just a de facto standard. Meaning it could break on a really old system, which probably isn’t likely nowadays.
This is the only correct Shebang.