30Jul
Όταν δημιουργείτε ένα νέο σενάριο κελύφους, θέλετε να βεβαιωθείτε ότι είναι όσο το δυνατόν πιο απρόβλεπτο, αλλά μερικές φορές μπορεί να είναι λίγο συγκεχυμένο να γνωρίζετε ποια shebang είναι η καλύτερη για εσάς να χρησιμοποιήσετε.Σε αυτό το σημείωμα, η σημερινή δημοσίευση SuperUser Q & A έχει την απάντηση σε μια ερώτηση σύγχυσης του αναγνώστη.
Η σημερινή ερώτηση &Η συνάντηση απαντήσεων έρχεται με την ευγένεια του SuperUser - μια υποδιαίρεση του Stack Exchange, μια κοινότητα-καθοδηγούμενη ομαδοποίηση Q & A ιστοσελίδες.
Η ερώτηση
Ο αναγνώστης SuperUser Hendre θέλει να μάθει πότε είναι καλύτερο να χρησιμοποιήσει το #!/bin/ bash αντί για #!/bin/ sh σε σενάρια κελύφους:
Πότε είναι πιο κατάλληλο να χρησιμοποιήσετε #!/bin/ bash αντί #!/bin/ sh σε σενάριο κελύφους;
Πότε είναι καλύτερο να χρησιμοποιήσετε το #!/bin/ bash αντί για #!/bin/ sh σε σενάριο κελύφους;
Η απάντηση
SuperUser συνεισφέρουσα γραφή έχει την απάντηση για μας:
Εν συντομία:
- Υπάρχουν αρκετά κελύφη που εφαρμόζουν ένα υπερσύνολο της προδιαγραφής POSIX sh.Σε διαφορετικά συστήματα, το /bin/ sh μπορεί να είναι ένας σύνδεσμος με τέφρα, bash, dash, ksh, zsh κ.λπ. Θα είναι πάντοτε sh-συμβατό όμως, ποτέ csh ή ψάρι.
- Εφ 'όσον κολλήσετε μόνο σε χαρακτηριστικά sh, μπορείτε( και μάλλον θα πρέπει) να χρησιμοποιήσετε το #!/bin/ sh και το σενάριο θα πρέπει να λειτουργεί καλά, ανεξάρτητα από το τι κέλυφος είναι.
- Αν αρχίσετε να χρησιμοποιείτε χαρακτηριστικά ειδικά για bash( δηλ. Συστοιχίες), θα πρέπει να ζητήσετε συγκεκριμένα bash επειδή, ακόμα και αν /bin/ sh ήδη επικαλείται bash στο σύστημά σας, ίσως να μην είναι στο σύστημα όλων των άλλων και το σενάριό σας δεν θα τρέξει εκεί.Το ίδιο ισχύει για το zsh και το ksh, φυσικά.
- Ακόμη και αν το σενάριο είναι μόνο για προσωπική χρήση, ίσως παρατηρήσετε ότι ορισμένα λειτουργικά συστήματα αλλάζουν το /bin/ sh κατά τις αναβαθμίσεις.Για παράδειγμα, στο Debian παλαιότερα, αλλά αργότερα αντικαταστάθηκε με την πολύ ελάχιστη παύλα.Σενάρια που χρησιμοποίησαν bashisms αλλά είχαν #!Το /bin/ sh ξέσπασε ξαφνικά.
Ωστόσο:
- Ακόμα #!/bin/ bash δεν είναι σωστό.Σε διαφορετικά συστήματα, το bash μπορεί να ζει σε δοχείο /usr/ , δοχείο /usr/pkg/ ή δοχείο /usr/local/ .
- Μια πιο αξιόπιστη επιλογή είναι η #!/usr/bin/ env bash , που χρησιμοποιεί το $ PATH .Αν και το ίδιο το εργαλείο env δεν είναι αυστηρά εγγυημένο, το /usr/bin/ env εξακολουθεί να λειτουργεί σε περισσότερα συστήματα από το /bin/ bash .
Έχετε κάτι να προσθέσετε στην εξήγηση;Απενεργοποιήστε τα σχόλια.Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους χρήστες τεχνολογίας Stack Exchange;Δείτε το πλήρες νήμα συζήτησης εδώ.Πιστοποίηση εικόνας
: Wikipedia