Τι ακριβώς κάνει το echo $PATH;

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

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

Τι ακριβώς κάνει το echo $PATH;

Δημοσίευσηαπό stamatiou » 29 Ιούλ 2011, 01:54

Παιδιά, μήπως μπορεί κάποιος να μου εξηγήσει τι κάνει η εντολή echo $PATH; (Δεν ήξερα που να το ποστάρω για αυτό αν είναι σε λάθος κατηγορία, παρακαλώ κάποιο διαχειριστή να το μετακινήσει :angel: )
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τι ακριβώς κάνει το echo $PATH;

Δημοσίευσηαπό Ilias95 » 29 Ιούλ 2011, 02:06

Η εντολή echo τυπώνει ότι ζητήσεις.
Ας πούμε αν δώσεις: echo Hello World!, θα έχεις έξοδο "Hello World!".
Στο path αποθηκεύονται οι κατάλογοι στους οποίους μπορεί να υπάρχουν εκτελέσιμα αρχεία όπως εντολές.
Αν δώσεις echo $PATH θα πάρεις κάτι σαν:
Κώδικας: Επιλογή όλων
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/ilias/myscripts:/home/ilias/hacking/python

Από τη στιγμή που δώσεις μια εντολή (πχ. ls ή cd) οι παραπάνω κατάλογοι θα εξεταστούν διαδοχικά μέχρι να βρεθεί η ζητούμενη εντολή.
Μόλις βρεθεί η εντολή σε έναν απ' τους παραπάνω καταλόγους η αναζήτηση σταματάει. Αν δεν βρεθεί θα σου πει "η εντολή δε βρέθηκε".
Το $ δηλώνει ότι αυτό που ακολουθεί είναι μεταβλητή. Αν δώσεις σκέτο echo PATH θα σου εμφανιστεί η λέξη "PATH" ενώ αν δώσεις echo $PATH θα εμφανιστεί το περιεχόμενο της μεταβλητής PATH.
Εκτός από την $PATH υπάρχουν και άλλες μεταβλητές όπως $ΗΟΜΕ και $SHELL τις οποίες μπορείς να δεις με την echo αντίστοιχα.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τι ακριβώς κάνει το echo $PATH;

Δημοσίευσηαπό stamatiou » 29 Ιούλ 2011, 02:09

Ilias95 έγραψε:Η εντολή echo τυπώνει ότι ζητήσεις.
Ας πούμε αν δώσεις: echo Hello World!, θα έχεις έξοδο "Hello World!".
Στο path αποθηκεύονται οι κατάλογοι στους οποίους μπορεί να υπάρχουν εκτελέσιμα αρχεία όπως εντολές.
Αν δώσεις echo $PATH θα πάρεις κάτι σαν:
Κώδικας: Επιλογή όλων
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/ilias/myscripts:/home/ilias/hacking/python

Από τη στιγμή που δώσεις μια εντολή (πχ. ls ή cd) οι παραπάνω κατάλογοι θα εξεταστούν διαδοχικά μέχρι να βρεθεί η ζητούμενη εντολή.
Μόλις βρεθεί η εντολή σε έναν απ' τους παραπάνω καταλόγους η αναζήτηση σταματάει. Αν δεν βρεθεί θα σου πει "η εντολή δε βρέθηκε".
Το $ δηλώνει ότι αυτό που ακολουθεί είναι μεταβλητή. Αν δώσεις σκέτο echo PATH θα σου εμφανιστεί η λέξη "PATH" ενώ αν δώσεις echo $PATH θα εμφανιστεί το περιεχόμενο της μεταβλητής PATH.
Εκτός από την $PATH υπάρχουν και άλλες μεταβλητές όπως $ΗΟΜΕ και $SHELL τις οποίες μπορείς να δεις με την echo αντίστοιχα.

Και τι πρέπει να δώσω για να βρω πού είναι η cat πχ;
Επίσης όταν λέμε εκτελέσιμα αυτά που τα κάνουμε με δεξί κλικ, permissions και Allow executing this file as program;
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τι ακριβώς κάνει το echo $PATH;

Δημοσίευσηαπό Ilias95 » 29 Ιούλ 2011, 02:19

Για να βρεις που είναι μια εντολή δίνεις: which command Πχ:
Κώδικας: Επιλογή όλων
which cat

Ναι αλλά δεν περιέχονται όλα τα εκτελέσιμα μέσα στο PATH.
Κάθε εντολή ας πούμε είναι ένα εκτελέσιμο πρόγραμμα. Πχ. η ls βρίσκεται στο "/bin/ls".
Αν δώσεις /bin/ls και ls σκέτο στον ίδιο κατάλογο θα πάρεις το ίδιο αποτέλεσμα. Αυτό συμβαίνει γιατί ο κατάλογος /bin είναι μέσα στο PATH και έτσι το σύστημα εντοπίζει την ls.
Αν δώσεις "asdf" θα σου πει η εντολή δεν βρέθηκε γιατί δεν υπάρχει τέτοιο εκτελέσιμο αρχείο μέσα σε κάποιο κατάλογο του PATH. Αν όμως φτιάξεις ένα πρόγραμμα, το κάνεις εκτελέσιμο, το ονομάσεις asdf και το βάλεις μέσα σε έναν απ' τους καταλόγους που περιέχονται στο PATH (η αλλάξεις το ίδιο το PATH) τότε από όπου και αν κτυπήσεις "asdf" θα τρέχει κανονικά το πρόγραμμα σου!
Τελευταία επεξεργασία από Ilias95 και 29 Ιούλ 2011, 02:22, έχει επεξεργασθεί 1 φορά/ες συνολικά
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τι ακριβώς κάνει το echo $PATH;

Δημοσίευσηαπό stamatiou » 29 Ιούλ 2011, 02:22

Ilias95 έγραψε:Για να βρεις που είναι μια εντολή δίνεις: which command Πχ:
Κώδικας: Επιλογή όλων
which cat

Ναι αλλά δεν περιέχονται όλα τα εκτελέσιμα μέσα στο PATH.
Κάθε εντολή ας πούμε είναι ένα πρόγραμμα. Πχ. η ls βρίσκεται στο "/bin/ls".
Αν δώσεις /bin/ls και ls σκέτο στον ίδιο κατάλογο θα πάρεις το ίδιο αποτέλεσμα. Αυτό συμβαίνει γιατί ο κατάλογος /bin είναι μέσα στο PATH και έτσι το σύστημα εντοπίζει την ls.
Αν δώσεις "asdf" θα σου πει η εντολή δεν βρέθηκε γιατί δεν υπάρχει τέτοιο εκτελέσιμο αρχείο μέσα σε κάποιο κατάλογο του PATH. Αν όμως φτιάξεις ένα πρόγραμμα, το κάνεις εκτελέσιμο, το ονομάσεις asdf και το βάλεις μέσα σε έναν απ' τους καταλόγους που περιέχονται στο PATH (η αλλάξεις το ίδιο το PATH) τότε από όπου και αν κτυπήσεις "asdf" θα τρέχει κανονικά το πρόγραμμα σου!

Δηλαδή είναι κάτι σαν τους φακέλους που ψάχνει το shell τις εντολές;
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τι ακριβώς κάνει το echo $PATH;

Δημοσίευσηαπό Ilias95 » 29 Ιούλ 2011, 02:24

Ακριβώς!
Και όπως σου είπα δεν ψάχνει μόνο για εντολές, αλλά γενικά για εκτελέσιμο αρχείο με όνομα ίδιο με αυτό που θα του δώσεις.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τι ακριβώς κάνει το echo $PATH;

Δημοσίευσηαπό modenas88 » 29 Ιούλ 2011, 03:21

Και αν θέλετε να δείτε όλες τις "μεταβλητές περιβάλλοντος" που υπάρχουν στο σύστημά σας...
Κώδικας: Επιλογή όλων
printenv
http://en.wikipedia.org/wiki/Environment_variable
https://help.ubuntu.com/community/EnvironmentVariables
Γνώσεις ⇛ Linux: Μέτριο ┃ Προγραμματισμός: Λίγο (Pascal>mysql>html>uml>C) ┃ Αγγλικά: Καλά
Διανομές ⇛ Ubuntu 12.04 64-bit [κανονική εγκατάσταση, ΌΧΙ wubi] +..
Προδιαγραφές ⇛ Pentium IV 64-bit!│ RAM 3GB │ GeForce 6200 TurboCache │ HD Audio │ TFT 19"
# < Τί είναι το Linux; >_&&_< Γιατί το Linux είναι καλύτερο? >_&&_< Κάτι δεν πάει καλά με τα Vista >
Αν είσαι αρχάριος στο Ubuntu, ακούμπησε το ποντίκι στην λέξη... drivers ;)
Άβαταρ μέλους
modenas88
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 815
Εγγραφή: 16 Νοέμ 2008, 22:21
Εκτύπωση


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