Μαθαίνω μέσω αυτού του σεμιναρίου να μαθαίνω bash scripts για να αυτοματοποιήσω μερικές εργασίες για μένα. Συνδέομαι σε έναν διακομιστή χρησιμοποιώντας το putty.
Το σενάριο, που βρίσκεται στο αρχείο .../Documents/LOG
, είναι το εξής:
#!/bin/bash
# My first script
echo "Hello World!"
Και εκτέλεσα τα ακόλουθα για δικαιώματα ανάγνωσης/εγγραφής/εκτέλεσης
chmod 755 my_script
Στη συνέχεια, όταν πληκτρολογώ ./my_script
, λαμβάνω το σφάλμα που αναφέρεται στον τίτλο.
Κάποιες παρόμοιες ερωτήσεις ήθελαν να δουν αυτά, οπότε νομίζω ότι μπορεί να βοηθήσουν:
which bash
/bin/bash
και
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/bin/mh
Προσπάθησα να προσθέσω τον τρέχοντα κατάλογο στο PATH
, αλλά αυτό δεν λειτουργεί...
Έχω δει αυτό το πρόβλημα κατά τη δημιουργία σεναρίων σε περιβάλλον Windows env και στη συνέχεια τη μεταφορά τους για εκτέλεση σε περιβάλλον Unix.
Δοκιμάστε να εκτελέσετε το dos2unix
στο σενάριο:
http://dos2unix.sourceforge.net/
Ή απλά ξαναγράψτε το σενάριο στο Unix env σας χρησιμοποιώντας vi
και δοκιμάστε.
Το Unix χρησιμοποιεί διαφορετικές καταλήξεις γραμμών και έτσι δεν μπορεί να διαβάσει το αρχείο που δημιουργήσατε στα Windows. Ως εκ τούτου, βλέπει το ^M ως παράνομο χαρακτήρα.
Αν θέλετε να γράψετε ένα αρχείο στα Windows και στη συνέχεια να το μεταφέρετε, βεβαιωθείτε ότι ο επεξεργαστής σας είναι ρυθμισμένος να δημιουργεί αρχεία σε μορφή UNIX.
Στο notepad++ στο κάτω δεξιά μέρος της οθόνης, σας λέει τη μορφή του εγγράφου. Από προεπιλογή, θα λέει Dos\Windows
. Για να το αλλάξετε πηγαίνετε στο
Εάν χρησιμοποιείτε το Sublime Text στα Windows ή Mac για να επεξεργαστείτε τα σενάριά σας:
Unix` και αποθηκεύστε το αρχείο ξανά.
Αυτό προκαλείται από την επεξεργασία του αρχείου στα windows και την εισαγωγή και εκτέλεση στο unix.
Το dos2unix -k -o filename
θα πρέπει να κάνει το κόλπο.