Większość kodu, który piszę, jest w języku PHP. Niedawno zacząłem uczyć się skryptowania powłoki. Większość zasobów i samouczków, które napotkałem, jest specyficzna dla Bash. Niektórzy ostrzegają przed bashizmami, a inni nie. Dużo tu czytałem i Stack Overflow.
Ilekroć w odpowiedzi używa się baszizmów , ktoś nieuchronnie skomentuje:
Nie powinieneś używać <wstaw tutaj bashizm>. To nie jest przenośne.
Dzieje się tak nawet wtedy, gdy pytanie zostało oznaczone tagiem bash. Dla mnie to jak mówienie programistom PHP, że nie powinni używać nowego kodu w PHP 5, ponieważ nie można go używać z PHP 4. Lub mówienie komuś, że nie powinien pisać czegoś na Maca, ponieważ nie można go użyć w systemie Windows.
Kiedy piszę w PHP, wybieram minimalne wymagania i piszę kod zgodny z przyszłością . Nie martwię się o to, aby był kompatybilny wstecz .
Jeśli używam #!/bin/bash
jako shebang, dlaczego nie powinienem używać bashism? Zaczynam mieć wrażenie, że niektórzy ludzie po prostu lubią bash bashisms (gra słów nie przeznaczonych) właśnie przez wzgląd na niego.
Ludzie często używają bash
i shell
zamiennie - prawdopodobnie dlatego, że bash jest domyślną powłoką w wielu systemach. Mogę więc zrozumieć dodanie komentarza, aby ostrzec, że kod używa bashism, ale nie rozumiem, że używanie ich jest niewłaściwe .
Oczywiście, jeśli piszę skrypt wyłącznie do użytku osobistego, mogę go napisać w dowolnym języku, który chcę. Chciałbym jednak pomyśleć, że część kodu, który piszę, może być przydatny dla innych.
Przed opublikowaniem próbowałem znaleźć odpowiedź na moje pytanie. Znalazłem wiele informacji na temat w jaki sposób przetestować dla przenośności, ale nie mógł znaleźć nic na temat , kiedy ważne jest , aby to zrobić.
Kiedy ważne jest pisanie przenośnych skryptów?
Na przykład,
- jakie typy skryptów powinny być jak najbardziej przenośne?
- jak powszechne są systemy bez zainstalowanego Bash?
- jeśli w systemie jest zainstalowany Bash, czy będzie miał także wersję GNU find i innych narzędzi?
bash
sam tag, ktoś komentuje „To bashism i nie przenośny”. Kiedy odpowiadam na pytanie, które jest oznaczone C
, nie obchodzi mnie, czy można je przenosić Java
czy nie.
bash
konkretna funkcja, a nie przenośność, tak jak chciałbym zauważyć, że dla jakiegoś narzędzia używane jest rozszerzenie specyficzne dla GNU (nawet jeśli pytanie zostało oznaczone jako Linux). Nigdy nie widziałem, żeby ktokolwiek powiedział „to jest bzdura i nigdy nie powinieneś go używać”.