Δημοσιεύτηκε: 07 Σεπ 2015, 03:37
από eliasps
geekerman έγραψε:Πρωτον,μεσα απο το script μου πως καλω αλλα προγραμματακια του υπο?Π.χ οταν καλεσα το xwinwrap η το google earth απλα με το ονομα τους,χωρις διαδρομες κλπ ετρεξε.Οταν παλι προσπαθησα να καλεσω το xwinwrap.sh που ετρεξα εγω,δεν εγινε τιποτα.Πρεπει το δευτερο να το καλω με ολη του την διαδρομη κι αν ναι τι ειναι αυτο που το διαχωριζει απο τα προηγουμενα κι πρεπει να το καλω ετσι?Το ιδιο συμβαινει και με τα μη εκτελεσιμα αρχεια?Πρεπει δηλαδη να τα καλω με την διαδρομη τους?

Όλα τα προγράμματα που εγκαθίστανται στον υπολογιστή, εγκαθίστανται σε συγκεκριμένες τοποθεσίες. Αυτές τις τοποθεσίες μπορείς να τις δεις με την εντολή:
Κώδικας: Επιλογή όλων
echo $PATH

Όπου θα πάρεις κάτι τέτοιο:
Κώδικας: Επιλογή όλων
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Όταν λοιπόν εκτελείς σκέτο:
Κώδικας: Επιλογή όλων
xwinwrap

Στην πραγματικότητα εκτελείται αυτό:
Κώδικας: Επιλογή όλων
/usr/bin/xwinwrap

Και αυτό γιατί το /usr/bin συμπεριλαμβάνεται στο $PATH, οπότε το βρίσκει μόνο του ακόμα και όταν δεν συμπεριλαμβάνεις ολόκληρη τη διαδρομή.
Τα δικά σου script από την άλλη, δεν συμπεριλαμβάνονται στο $PATH, οπότε όταν πχ. εκτελείς σκέτο:
Κώδικας: Επιλογή όλων
onoma_script.sh

To σύστημα ψάχνει στο $PATH να βρει αυτό το αρχείο, δηλαδή σε αυτές εδώ τις διαδρομές:
Κώδικας: Επιλογή όλων
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Αλλά δεν το βρίσκει.

geekerman έγραψε:Δευτερον,απο ποιον καταλογο τρεχουν τα scriptakia μου κι εχει καποια σημασια αυτο?

Τρέχουν από όπου και να τα βάλεις, αρκεί να δώσεις την σωστή διαδρομή. Ή μπορείς να φτιάξεις έναν φάκελο (πχ ~/scripts), να βάζεις όλα σου τα scripts εκεί και να το συμπεριλάβεις στο $PATH για να τα εκτελείς χωρίς διαδρομή. Αλλά δεν έχει κάποια σημασία είτε έτσι το κάνεις είτε αλλιώς.

geekerman έγραψε:Τριτον,η γλωσσα των scripts ειναι δομημενη με την εννοια οτι μπορω να προσθεσω στον κωδικα μου και εντολες τυπου while for και switch?Eπισης ειναι γλωσσα ελευθερης μορφης?

Ναι, η γλώσσα είναι bash, και υπάρχουν εντολές για επαναλήψεις, ελέγχους και πολλά άλλα, όπως στις γλώσσες προγραμματισμού.

geekerman έγραψε:Τεταρτον,τα script σε τι διαφερουν απο τα προγραμματα που ναι γραμμενα πχ σε java η c++?Ας πουμε java και javascript ειναι διαφορετικες γιατι κανουν διαφορετικα πραγματα?

Είναι θέμα επιλογής. Το bash scripting είναι το καταλληλότερο για την αυτοματοποίηση διαδικασιών στο Ubuntu. Scripts σε java ή σε javascript έχουν διαφορετικό συντακτικό και system calls, αλλά μπορούν να κάνουν την ίδια δουλειά. Είναι θέμα καταλληλότητας, αποτελεσματικότητας και είναι ανάλογο με τον σκοπό του script.

Το θέμα μεταφέρθηκε σε καταλληλότερη ενότητα.