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?


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

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

fervi napisał(-a):

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

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/random
Zarejestrowany: 2008-01-07

Re: Standard POSIX

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 [ ] .

/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

enether napisał(-a):

bo w dashu nie ma skróconej operacji testu w formie [ ] .

Możesz rozwinąć?

Kod:

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

Offline

 

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

  enether - wiecznie niewyspany

enether
wiecznie niewyspany
Zarejestrowany: 2012-05-01

Re: Standard POSIX

milyges napisał(-a):

enether napisał(-a):

bo w dashu nie ma skróconej operacji testu w formie [ ] .

Możesz rozwinąć?

Kod:

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

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.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: 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

Jacekalex napisał(-a):

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.

Bash jest dość mułowaty i stąd dowiązanie /bin/sh→/bin/dash, ale jest przecież dalej domyślną powłoką interaktywną.

Offline

 

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

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
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

Jacekalex napisał(-a):

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 (...)

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ę ;)

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,


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

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)