eurekafag
20.02.2012 19:32 Home
https://github.com/eurekafag/Shell-Spark... Ридмишек нет, хелпа нет, ничего нет. Можно потыкаться в сорс и догадаться, что делает каждая команда. Багрепорты также пока не нужны, за сегодня слепил опознание флешки, монтирование и автосинхронизацию через udev. Из требований: /bin/sh (у меня его роль выполняет dash, не факт, что в других дистрах всё заработает как планируется, но все в один голос твердят, что /bin/sh везде одинаковый, а вот /bin/bash разный, и что если под /bin/sh пишешь, то 146%, что заработает везде), git, zenity, pmount (опционально). Вроде, всё.
"если под /bin/sh пишешь, то 146%, что заработает везде" — хорошо бы, если бы так. Как же сократились бы ебучие configure-скрипты autoconf'а в этом случае.
Кроме того, в спорных/ненадёжных моментах лучше ориентироваться на posix: http://pubs.opengroup.org/onlinepubs/009... , а не на "работает на /bin/sh и ладно".
Хотя, если не "рокетсаенс на шелле", то тест "работает на /bin/sh" вполне годен для практического применения.
Самое сомнительное, что у меня там есть, это PARAMETER EXPANSION, т.е. игрища с ${текст##ещё текст}, остальное по большей части вызовы программ и if/case.
а, это всё одобрено раввинатом. современные шеллы должны воспринять нормально.
Я вообще думал, такое только в баше есть, немало охуел-с, когда заработало даже в подмножестве.
та же хуйня была. убедился, что posix таки хоть как-то неплох, не просто "список команд и ебись как хочешь". даже функции в стандарте есть, шок.
что напрягало из отсутствующего в стандарте, так это необходимость вызывать test для выяснения результатов сравнения. так и не нашёл решения без test.
А разве [ ] не работают? У меня работают.
обычно "[" это симлинк на "test", то есть, разницы мало.
однако посмотрел на текущем хосте, там это два разных бинарника, оба ELF. удивительно. но суть особо не меняется, без вызова внешних бинарников я не нашёл, как проверить условие.
Вот только проблема в том, что настоящего sh нигде нет, везде он давно заменен башем, а /bin/sh — симлинк.