Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 12633|Απάντηση: 0

[Linux] /bin/bash^M: bad interpreter: No such file or directory

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 13/6/2020 10:40:35 μ.μ. | | | |
Κατά την εκτέλεση ενός σεναρίου κελύφους, επιστρέφεται το ακόλουθο σφάλμα:

-bash: ./log_job.sh: /bin/bash^M: κακός διερμηνέας: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος
Αιτίες σφάλματος:

.sh σενάριο είναι γραμμένο στο σύστημα Windows, επομένως μπορεί να υπάρχουν αόρατοι χαρακτήρες, από την παραπάνω προτροπή σφάλματος, είναι πολύ πιθανό το αρχείο σεναρίου να είναι σε μορφή DOS, δηλαδή το τέλος κάθε γραμμής να προσδιορίζεται από \r\n και ο κωδικός ASCII του να είναι 0x0D, 0x0A αντίστοιχα.

Το σφάλμα που εμφανίζεται κατά την εκτέλεση ενός σεναρίου φλοιού οφείλεται κυρίως στο γεγονός ότι το αρχείο σεναρίου φλοιού είναι σε μορφή DOS, δηλαδή το τέλος κάθε γραμμής προσδιορίζεται με \r\n και το τέλος του αρχείου μορφής UNIX προσδιορίζεται με \n.

Ειδική σημείωση: Το ^M δεν είναι το ^ και το γράμμα M που παράγεται από το πλήκτρο shift + 6, είναι ένας χαρακτήρας, το ASCII του είναι 0x0D, ο τρόπος για να το δημιουργήσετε είναι να πατήσετε πρώτα CTRL+V και μετά να εισάγετε (ή CTRL+M)


λύση

Υπάρχουν διάφοροι τρόποι για να ελέγξετε εάν το αρχείο σεναρίου είναι σε μορφή DOS ή UNIX.

(1) Ελέγξτε τη μορφή του σεναρίου: cat -A όνομα αρχείου Από τα αποτελέσματα εμφάνισης, μπορεί να κριθεί ότι η γραμμή αρχείου που τελειώνει σε μορφή dos είναι ^M$ και η γραμμή αρχείου που τελειώνει σε μορφή unix είναι $.



(2) Τροποποιήστε τη μορφή του σεναρίου: vi όνομα αρχείου για να ανοίξετε το αρχείο και να το εκτελέσετε:set ff=unixΟρίστε το αρχείο σε unix και εκτελέστε:wq, αποθηκευμένο σε μορφή UNIX.

  (3) Ελέγξτε τη μορφή του σεναρίου: cat -A όνομα αρχείου Από το αποτέλεσμα εμφάνισης, μπορείτε να κρίνετε ότι η γραμμή αρχείου που τελειώνει σε μορφή dos είναι ^M$ και η γραμμή αρχείου που τελειώνει σε μορφή unix είναι $.







Προηγούμενος:Εκμάθηση SSIS 1 Εισαγωγή στις υπηρεσίες ενοποίησης του SQL Server
Επόμενος:Διαχωρισμός και διαγραφή αρχείων καταγραφής Nginx
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com