[linux] shebang

pilot

В alt.Linux меня не слышат, но все равно интересно:
столкнулся с этим когда делал cgi на lisp:
Вот такой shebang не распознается в линухе. (точнее, запускается просто clisp)
 
 #!/usr/bin/clisp -M mem.clisp -q -q -norc 

Параметры командной строки в shebang'е не разбираются. В отличие от FreeBSD.
Почему так жизнь устроена?

Ivan8209

> Почему так жизнь устроена?
На этот счёт есть несколько ответов.
A39: Сдуру можно много чего сломать
A40: Так завещел великий и мудрый LT и по другому <...> некошерно.
и самый правильный
A9: ОС - это БЗДя
---
...Я работаю антинаучным аферистом...

pilot

Что "так оно есть" — понятно, вопрос "почему?".
Неужели сложно разобрать аргументы как следует? как в командной строке shell? Почему не разрешить длиннее 128 символов строку?

Marinavo_0507

А ты хочешь, чтобы в ядре был интерпретатор команд, совместимый с sh? Это вряд ли, ведь шелл отлично и в юзерленде живёт.
Я бы сказал, что это проблема clisp, если все опции только в командной строке задаются, и не переопределяются изнутри программы.

Ivan8209

> А ты хочешь, чтобы в ядре был интерпретатор команд, совместимый с sh?
> Это вряд ли, ведь шелл отлично и в юзерленде живёт.
Он там и живёт, а параметры разбираются.
Может, всё-таки, не в этом дело?
> Я бы сказал, что это проблема clisp, если все опции только в командной строке задаются,
> и не переопределяются изнутри программы.
По-твоему, опции обрабатываются позже загрузки состояния ВМ?
А как иначе определить, какое состояние ВМ загружать?
Поставим вопрос иначе.
Допустим, ВМ-по-умолчанию не будет отрабатывать пользовательские команды,
тогда что ж, живому пользователю каждый раз набирать (load "file")?
---
Q7: А что за suxx?
A7: unix.

pilot

А ты хочешь, чтобы в ядре был интерпретатор команд, совместимый с sh? Это вряд ли, ведь шелл отлично и в юзерленде живёт.
Если он есть хоть какой-то, то почему такой? Пусть не "совместимый с sh", но хоть опции разбирающий?
Логика где? Как они выбрали что поддержать? Почему бы разработчикам Linux не повторить то что уже было сделано во FreeBSD? Они FreeBSD-шное поведение переосмыслили, вот и интересно "как".

Ivan8209

> Пусть не "совместимый с sh", но хоть опции разбирающий?
Не надо этого.
---
...skripa zubama...

sergey_m

Странно. Я вот только что проверил, мои скрипты которые начинаются на !#/usr/bin/perl -wT работают как и положено под линуксом. -w и -T действуют.

Ivan8209


#!/bin/sh
exec /usr/bin/clisp -M mem.clisp -q -q -norc <<EOF
...
EOF

чтоб больше не задаваться вопросом о несправедливости жизни.
---
...Я работаю антинаучным аферистом...

pilot

#!/usr/local/bin/clisp -norc -M /usr/home/fvv/work/lisp/qst-cgi.clisp -q -q -E utf-8

Вот такая штука не работает.

Marinavo_0507

Пусть не "совместимый с sh", но хоть опции разбирающий?
Каким-то образом он опции передаёт, см. ответ 'а.
Просто нужно где-то остановиться, а то следующий захочет, чтобы переменные окружения подставлялись, чтоб эскейпинг работал, чтоб больше одной программы можно было запустить, чтоб работали && и ||, и т.д.
Все такие сложности - в юзерленде пусть живут.
Оставить комментарий
Имя или ник:
Комментарий: