Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-05-22 22:22:26

  dominbik - Członek DUG

dominbik
Członek DUG
Zarejestrowany: 2011-07-25

Standard POSIX

Witam!
Orientuje się ktoś w tym? Jest na przykład skrypt w bashu - no, ale wyrzucam z niego wszelkie "bashinizmy" i zmieniam shebang na !#/bin/sh - no właśnie i jeżeli pod !#/bin/sh skrypt działa to wymagane jest jeszcze jakieś działanie? Żeby było zgodnie ze sztuką musi działać pod wszystkimi możliwymi? - tzn, tcsh, zsh, ksh, csh ? Pod bashem zwykle bezproblemowo działa to co działa przez /bin/sh. Jak to z tym jest?


[img]http://img34.imageshack.us/img34/5092/zw9m.png[/img] [img]http://img29.imageshack.us/img29/219/pibw.png[/img]

Offline

 

#2  2013-05-22 22:40:08

  enether - wiecznie niewyspany

enether
wiecznie niewyspany
Zarejestrowany: 2012-05-01

Re: Standard POSIX

Kod:

% ls -l /bin/sh
lrwxrwxrwx 1 root root 4 mar  1  2012 /bin/sh -> dash

Tak w kwestii /bin/sh

Jak widać w Debianie /bin/sh to nie bash ani nawet sh. To dash. I potem w skryptach robi się problem gdy ma być przenośny. Ostatnio miałem taki problem z OSSEC IDS. Ich skrypt instalacyjny zaczynał się od shebanga #!/bin/sh przez co instalacja się wywalała, bo w dashu nie ma skróconej operacji testu w formie [ ] .

Offline

 

#3  2013-05-22 22:41:18

  fervi - Użytkownik

fervi
Użytkownik
Zarejestrowany: 2010-03-14

Re: Standard POSIX

A czy POSIX to nie standard ogólny dla Linuksów / Uniksów, chodzi mi o rozmieszczenie katalogów, domyślne programy itd.?

Fervi

PS. W teorii Bash najpopularniejszy, ale możesz przetestować na różnych

Offline

 

#4  2013-05-22 23:33:58

  $pwd - Użytkownik

$pwd
Użytkownik
Zarejestrowany: 2013-02-07

Re: Standard POSIX

[quote=fervi]A czy POSIX to nie standard ogólny dla Linuksów / Uniksów, chodzi mi o rozmieszczenie katalogów, domyślne programy itd.?[/quote]
Przed 1977, nie było problemu ze standaryzacją UNIX'a, po tym roku [na niwie zmiany prawa licencyjnego w US], kiedy AT&T umożliwiono sprzedaż licencji kodu źródłowego najpierw ośrodkom naukowym, a potem praktycznie każdemu zainteresowanemu, kogo było na to stać; problem takowy zaczął się pojawiać.

Od lat 80'tych masz rozwój wielu wersji UNIX'a, przez różnych developerów. Nawet Microsoft miał przygodę ze swoim XENIXEM; który był praktycznie kopią Systemu V --> problem w tym że XENIX miał za duże wymagania systemowe jak na ówczesne nowo wprowadzone komputery domowe IBM; takoż powstał klon systemu Digital Research CP/M, którego autorem był Tim Paterson, ów klon znamy do dzisiaj pod nazwą MS-DOS.
 
Wracając do UNIX'a.
Prawie każdy 'nabywca' kodu miał swoją wizję rozwoju systemu; co spowodowało dość duży bałagan, odczuwalny zwłaszcza w II połowie lat 80'tych.

Wtedy też poczęto prace nad standaryzacją.
W 1983 r. Amerykański Narodowy Instytut Standaryzacji tj. ANSI powołał komitet, którego zadaniem było sformułowanie nowoczesnej, wszechstronnej definicji języka C. Pod koniec 1989 r. zaczął obowiązywać nowy standard języka programowania C - ANSI Standard X.3159-1989. Zyskał on rangę międzynarodową jako standard ISO/IEC 9899:1990.

POSIX rozwijany przez organizację IEEE [Institute of Electrical and Electronics Engineers], odnosił się początkowo do standardu 1003.1-1988 tj. interfejsu systemu operacyjnego, IEEE z czasem rozwinął standardy, jak np. o 1003.2; który ma identyfikować standard dla powłok oraz programów wspomagających, a 1003.7 ma być standardem administrowania systemem etc.

Offline

 

#5  2013-05-23 03:03:25

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Standard POSIX

Jak widać w Debianie /bin/sh to nie bash [b]ani nawet sh[/b]. To dash. I potem w skryptach robi się problem gdy ma być przenośny. Ostatnio miałem taki problem z OSSEC IDS. Ich skrypt instalacyjny zaczynał się od shebanga #!/bin/sh przez co instalacja się wywalała, bo w dashu nie ma skróconej operacji testu w formie [ ] .[/quote]
/bin/sh - to w Linuxie zawsze jest dowiązanie symboliczne do aktualnego interpretera  powłoki.

Z interpreterów powłoki najpopularniejsze, to bash i zsh, jest też dash, csh, tcsh  i kilka innych.
Przywiązania Debiana do powłoki Dash nie rozumiem specjalnie, osobiście używam Basha.

Pozdrawiam
;-)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#6  2013-05-23 09:31:37

  milyges - inż.

milyges
inż.
Skąd: Gorlice/Kraków
Zarejestrowany: 2006-04-09
Serwis

Re: Standard POSIX

[quote=enether]bo w dashu nie ma skróconej operacji testu w formie [ ] .[/quote]
Możesz rozwinąć?

Kod:

root@srv03:~# echo '[ -e /etc/passwd ]; echo $?' | dash
0
root@srv03:~# echo '[ -e /etc/passwd2 ]; echo $?' | dash
1
root@srv03:~#

[url=http://mhroczny.net][b]strona domowa[/b][/url] || [url=http://dug.net.pl][b]polski portal debiana[/b][/url]

Offline

 

#7  2013-05-23 11:08:06

  enether - wiecznie niewyspany

enether
wiecznie niewyspany
Zarejestrowany: 2012-05-01

Re: Standard POSIX

[quote=milyges][quote=enether]bo w dashu nie ma skróconej operacji testu w formie [ ] .[/quote]
Możesz rozwinąć?

Kod:

root@srv03:~# echo '[ -e /etc/passwd ]; echo $?' | dash
0
root@srv03:~# echo '[ -e /etc/passwd2 ]; echo $?' | dash
1
root@srv03:~#

[/quote]
Ehm, my bad. Pamięc zawiodła. Dokładny komunikat błędu brzmiał:

Kod:

./install.sh: 372: ./install.sh: [[: not found

Czyli chodziło o [[

Offline

 

#8  2013-05-23 12:04:21

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Standard POSIX

[[ ]] nie jest POSIX-owe.

Autor install.sh spartolił i wrzucił bashyzm w skrypt /bin/sh. Nie ma w tym żadnej winy ani dasha, ani żadnej innej powłoki.


Błogosławieni, którzy czynią FAQ.
[url=http://www.opencaching.pl]opencaching[/url] :: [url=http://dug.net.pl/sources.list]debian sources.list[/url] :: [url=http://www.linuxportal.pl/blogi/azhag/wpisy]coś jakby blog[/url] :: [url=http://dug.net.pl/]polski portal debiana[/url] :: linux user #403712

Offline

 

#9  2013-05-23 12:42:42

  enether - wiecznie niewyspany

enether
wiecznie niewyspany
Zarejestrowany: 2012-05-01

Re: Standard POSIX

Nigdzie nie stwierdziłem że winny jest dash. Zwyczajnie wskazałem na to że sh to nie zawsze powłoka bourne'a a powłoka którą twórcy dystrybucji uznali za słuszną na to miejsce.

Offline

 

#10  2013-05-23 17:16:19

  lx - Użytkownik

lx
Użytkownik
Zarejestrowany: 2010-06-22

Re: Standard POSIX

[quote=Jacekalex]Z interpreterów powłoki najpopularniejsze, to bash i zsh, jest też dash, csh, tcsh  i kilka innych.
Przywiązania Debiana do powłoki Dash nie rozumiem specjalnie, osobiście używam Basha.[/quote]
Bash jest dość mułowaty i stąd dowiązanie /bin/sh→/bin/dash, ale jest przecież dalej domyślną powłoką interaktywną.


(aka mickul)

[url=http://sourceforge.net/projects/manpages-pl/]Polskie strony podręcznika systemowego[/url]

Offline

 

#11  2013-05-23 18:02:36

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Standard POSIX

Mułowaty? Zależy na jakim sprzęcie, może w okolicach Debiana Etch i Ubuntu 6.10 i ówczesnego sprzętu to było aktualne, ja na C2D nie widzę żadnej różnicy między oboma interpreterami, natomiast Bash ma wbudowany silnik regex, czego o ile się nie mylę Dash nie posiada, i jest odporny na rozmaite bashyzmy, których pełno na necie,
a i w systemie się zdarza, jak w sławnym błędzie Gentoo'wego OpenRC, który wołał o /bin/sh, choć skrypty były pisane w bashu,
i w starszych wersjach trzeba było kombinować specjalną łatkę, żeby OpenRC wołał o basha a nie sh, jeśli ktoś miał np sh -> zsh.

Jeśli natomiast chodzi o szybkość większych i bardziej skomplikowanych skryptów, to i tak zazwyczaj staram się takowe robić w perlu, ze względu na brak ograniczeń, jakie posiadają typowe interpretery powłoki.
Perlizmy natomiast można spokojnie przenosić między wszystkimi Linuxami, BSD, i MacOS, nawet na Win$ można ich w jakimś stopniu używać.
To też jest pewna zaleta, której Bash czy Dash nie posiadają w takim stopniu.

Pozdrawiam
;-)

Ostatnio edytowany przez Jacekalex (2013-05-23 18:03:52)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#12  2013-05-23 19:20:23

  lx - Użytkownik

lx
Użytkownik
Zarejestrowany: 2010-06-22

Re: Standard POSIX

[quote=Jacekalex]Mułowaty? Zależy na jakim sprzęcie, może w okolicach Debiana Etch i Ubuntu 6.10 i ówczesnego sprzętu to było aktualne, ja na C2D nie widzę żadnej różnicy między oboma interpreterami, natomiast Bash ma wbudowany silnik regex, czego o ile się nie mylę Dash nie posiada, i jest odporny na rozmaite bashyzmy, których pełno na necie (...)[/quote]
To raczej kwestia tego, że rozbudowane funkcje basha są zbędne powłoce nieinteraktywnej, natomiast negatywnie odbijają się na wydajności, a Debian z założenia ma działać na bardzo różnym sprzęcie. No i zawsze to dobra okazja do eliminacji bashyzmów. W przypadku Debiana odbyło się to głównie kosztem użytkowników Ubuntu, które pierwsze wprowadziło tę zmianę ;)


(aka mickul)

[url=http://sourceforge.net/projects/manpages-pl/]Polskie strony podręcznika systemowego[/url]

Offline

 

#13  2013-05-24 11:44:42

  dominbik - Członek DUG

dominbik
Członek DUG
Zarejestrowany: 2011-07-25

Re: Standard POSIX

Dla mnie również domniemana mułowatość basha to jakiś absurd przy dzisiejszych komputerach. Na wirtualnym Wheezy w KVM, zainstalowałem sobie wszystkie te powłoki (bash, dash, zsh, ksh, tcsh, csh). O ile w przypadku pierwszych czterech rzeczywiście można pisać w miarę "uniwersalny" skrypt to te "tcsh" i "csh" to chyba jakieś stare nierozwijane dziadki,


[img]http://img34.imageshack.us/img34/5092/zw9m.png[/img] [img]http://img29.imageshack.us/img29/219/pibw.png[/img]

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.008 seconds, 9 queries executed ]

Informacje debugowania

Time (s) Query
0.00011 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00093 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.141.244.153' WHERE u.id=1
0.00065 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.141.244.153', 1714348498)
0.00035 SELECT * FROM punbb_online WHERE logged<1714348198
0.00050 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=23574 AND t.moved_to IS NULL
0.00006 SELECT search_for, replace_with FROM punbb_censoring
0.00180 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=23574 ORDER BY p.id LIMIT 0,25
0.00085 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=23574
Total query time: 0.00529 s