Это означает больше исторической информации, чем «реального» ответа.
Помните, что в те дни у вас было МНОЖЕСТВО Unix, таких как операционные системы, дизайнеры которых имели свое собственное представление о том, куда помещать вещи, а иногда не включали в себя Python, Perl, Bash или множество других GNU / Open Source вещи вообще .
Это справедливо даже для разных дистрибутивов Linux. В Linux - pre-FHS [1] - у вас может быть python в / usr / bin / или / usr / local / bin /. Или, возможно, он не был установлен, поэтому вы создали его и поместили в ~ / bin
Solaris был худшим из всех, над которыми я когда-либо работал, частично как переход с Berkeley Unix на System V. Вы можете оказаться с вещами в / usr /, / usr / local /, / usr / ucb, / opt / и т. Д. Это может сделать для некоторых действительно длинных путей. У меня есть воспоминания о том, как Sunfreeware.com устанавливал каждый пакет в свой собственный каталог, но я не могу вспомнить, содержит ли он символические ссылки в / usr / bin или нет.
Да, иногда / usr / bin находился на NFS-сервере [2].
Итак, утилита env
была разработана, чтобы обойти это.
Тогда вы могли бы написать #!/bin/env interpreter
, и, пока путь был верным, у вещей был разумный шанс на запуск. Конечно, разумный означал (для Python и Perl), что вы также установили соответствующие переменные среды. Для bash / ksh / zsh это просто сработало.
Это было важно, потому что люди передавали скрипты оболочки (такие как perl и python), и если вы жестко запрограммировали / usr / bin / python на вашей рабочей станции Red Hat Linux, то это будет плохо работать на SGI ... ну, нет, я думаю, что IRIX поставил python в нужное место. Но на станции Sparc он может вообще не работать.
Я скучаю по своей станции sparc. Но не много. Хорошо, теперь ты заставляешь меня троллить по E-Bay. Bastages.
[1] Стандарт иерархии файловой системы. https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
[2] Да, и иногда люди все еще делают подобные вещи. И нет, я не носил на поясе ни репы, ни лука.