8 ms·
It seems to be a convention those days to use `#!/usr/bin/env sh`. At least it's a single entry point. Why can't we just write `#!sh` I never understood. Anoth
by vbezhenar 4y ago
It seems to be a convention those days to use `#!/usr/bin/env sh`. At least it's a single entry point. Why can't we just write `#!sh` I never understood.
Another interesting snippet from your link:
"Furthermore, on systems that support executable scripts (the "#!" construct), it is recommended that applications using executable scripts install them using getconf PATH to determine the shell pathname and update the "#!" script appropriately as it is being installed (for example, with sed)."
So there could be systems which does not support shebang yet claiming to be POSIX?
- cperciva 4y agoWhy can't we just write `#!sh` I never understood. It's because #! is handled by the kernel, but the process environment is not parsed by the kernel.
- vbezhenar 4y agoParsing PATH should not be that hard.
- bregma 4y agoSure add arbitrary user input string parsing to the privileged kernel in a place where programs are launched. The CVE database is pretty sparse as it is and could use a good churning. So, assuming the string is parsed safely and securely, does the kernel have enough semantic knowledge of paths to know which service to pass it to? Are the services guaranteed to be loaded and running at all times? Or is there an underlying architectural assumption that the kernel is a Linux-style monolith and POSIX no longer applies to micro- and nano-kernel systems?
- cperciva 4y agoIt isn't... now. On a PDP-11 with 40 kW of RAM, on the other hand...