Κληση αλλων προγραμματων απο script μου  Το θέμα επιλύθηκε

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Κληση αλλων προγραμματων απο script μου

Δημοσίευσηαπό geekerman » 07 Σεπ 2015, 03:26

Παιδια θελω να αρχισω σιγα σιγα να φτιαχνω δικα μου scripts κι μου χουν γεννηθει μερικες αποριες.Πρωτον,μεσα απο το script μου πως καλω αλλα προγραμματακια του υπο?Π.χ οταν καλεσα το xwinwrap η το google earth απλα με το ονομα τους,χωρις διαδρομες κλπ ετρεξε.Οταν παλι προσπαθησα να καλεσω το xwinwrap.sh που ετρεξα εγω,δεν εγινε τιποτα.Πρεπει το δευτερο να το καλω με ολη του την διαδρομη κι αν ναι τι ειναι αυτο που το διαχωριζει απο τα προηγουμενα κι πρεπει να το καλω ετσι?Το ιδιο συμβαινει και με τα μη εκτελεσιμα αρχεια?Πρεπει δηλαδη να τα καλω με την διαδρομη τους?Δευτερον,απο ποιον καταλογο τρεχουν τα scriptakia μου κι εχει καποια σημασια αυτο?Τριτον,η γλωσσα των scripts ειναι δομημενη με την εννοια οτι μπορω να προσθεσω στον κωδικα μου και εντολες τυπου while for και switch?Eπισης ειναι γλωσσα ελευθερης μορφης?Τεταρτον,τα script σε τι διαφερουν απο τα προγραμματα που ναι γραμμενα πχ σε java η c++?Ας πουμε java και javascript ειναι διαφορετικες γιατι κανουν διαφορετικα πραγματα?Σας επρηξα το ξερω.... :wave:
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Πρώτα βήματα
2 Ubuntu 14.04 trusty 3.13.0-58-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.13.0-32-generic
3 Intel Core i5-3230M CPU @ 2.60GHz ‖ RAM 3904 MiB ‖ Intel PLCSF8 - TOSHIBA SATELLITE C855-22M
4 Advanced Micro Devices, Inc. [AMD/ATI] Whistler LE [Radeon HD 6610M/7610M] [1002:6742] {radeon}
5 wlan0: Realtek RTL8723AE PCIe Wireless Network Adapter [10ec:8723] ⋮ eth0: Realtek RTL8101E/RTL8102E Ethernet [10ec:8136] (rev 05)
geekerman
babeTUX
babeTUX
 
Δημοσιεύσεις: 26
Εγγραφή: 02 Σεπ 2015, 01:41
Εκτύπωση

Re: Κληση αλλων προγραμματων απο script μου  Το θέμα επιλύθηκε

Δημοσίευσηαπό eliasps » 07 Σεπ 2015, 03:37

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.

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

Άβαταρ μέλους
eliasps
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4017
Εγγραφή: 16 Δεκ 2011, 22:25
Τοποθεσία: Αθήνα, Αττική
Launchpad: eliasps
IRC: eliasps
Εκτύπωση

Re: Κληση αλλων προγραμματων απο script μου

Δημοσίευσηαπό geekerman » 07 Σεπ 2015, 04:18

Ευυχαριστωω πολυ :)
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Πρώτα βήματα
2 Ubuntu 14.04 trusty 3.13.0-58-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.13.0-32-generic
3 Intel Core i5-3230M CPU @ 2.60GHz ‖ RAM 3904 MiB ‖ Intel PLCSF8 - TOSHIBA SATELLITE C855-22M
4 Advanced Micro Devices, Inc. [AMD/ATI] Whistler LE [Radeon HD 6610M/7610M] [1002:6742] {radeon}
5 wlan0: Realtek RTL8723AE PCIe Wireless Network Adapter [10ec:8723] ⋮ eth0: Realtek RTL8101E/RTL8102E Ethernet [10ec:8136] (rev 05)
geekerman
babeTUX
babeTUX
 
Δημοσιεύσεις: 26
Εγγραφή: 02 Σεπ 2015, 01:41
Εκτύπωση

Re: Κληση αλλων προγραμματων απο script μου

Δημοσίευσηαπό eliasps » 07 Σεπ 2015, 06:34

geekerman έγραψε:Ευυχαριστωω πολυ :)

Μία διευκρίνιση μόνο, αν και αυτό ισχύει, δεν είναι απολύτως ορθό:
eliasps έγραψε:Όλα τα προγράμματα που εγκαθίστανται στον υπολογιστή, εγκαθίστανται σε συγκεκριμένες τοποθεσίες...

Το σύστημα ψάχνει σε αυτές τις τοποθεσίες για εκτελέσιμα αρχεία. Όταν εγκαθιστάς προγράμματα από τα αποθετήρια, πηγές τρίτων ή ακόμη και από μεταγλώττιση του πηγαίου κώδικα, τα προγράμματα εγκαθίστανται όπου εγκαθίστανται από την επιλογή του εκάστοτε developer. Απλά προτιμούν κάποια από τις παραπάνω τοποθεσίες ακριβώς επειδή εκεί ψάχνει το σύστημα για εκτελέσιμα αρχεία. Δηλαδή δεν πρόκειται για καθολικό κανόνα, πράγμα που σημαίνει πως δεν είναι απίθανο να υπάρχουν εξαιρέσεις (πχ προγράμματα εγκατεστημένα στο /opt).
Άβαταρ μέλους
eliasps
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4017
Εγγραφή: 16 Δεκ 2011, 22:25
Τοποθεσία: Αθήνα, Αττική
Launchpad: eliasps
IRC: eliasps
Εκτύπωση


  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι