Απόλυτες και Σχετικές Διαδρομές, Τρέχων Κατάλογος

Εικόνα: markos
Submitted by markos on Κυρ, 04/03/2007 - 20:10

Όπως είδαμε και στο προηγούμενο παράδειγμα, η εντολή ls επέστρεψε τα περιεχόμενα του βασικού καταλόγου /. Αυτό συνέβη γιατί ο τρέχων κατάλογος του κελύφους και συνεπώς και της εντολής ήταν ο κατάλογος /. Τί ακριβώς όμως σημαίνει τρέχων κατάλογος;

Κάθε αρχείο αναγνωρίζεται στο σύστημα από τη μοναδική του διαδρομή (path) στο σύστημα αρχείων. Δηλαδή υπάρχει μόνο ένα αρχείο που βρίσκεται στον κατάλογο /etc και έχει όνομα passwd. Η διαδρομή του αρχείου αυτού είναι /etc/passwd. Το ίδιο ισχύει και για τους καταλόγους, λόγου χάριν ο κατάλογος /var/log είναι μοναδικός στο σύστημα. Έτσι για να έχουμε πρόσβαση σε κάποιο αρχείο ή κατάλογο θα πρέπει να το προσπελάσουμε χρησιμοποιώντας την διαδρομή του. Αν πρόκειται για ένα αρχείο όπως το /etc/passwd αυτό είναι αρκετά εύκολο. Τί γίνεται όμως αν έχουμε να κάνουμε με αρχεία όπως /var/log/very/long/path/verylongfilename.log; Κάτι τέτοιο γίνεται κουραστικό, ειδικά για μεγάλο αριθμό αρχείων. Αλλά υπάρχει και ένα άλλο πρόβλημα, καθώς τα προγράμματα συνήθως πρέπει να είναι σχεδιασμένα έτσι ώστε να μπορούν να εκτελεστούν χωρίς να παίζει ρόλο σε ποιο κατάλογο τρέχουν. Εξάλλου, τα ίδια προγράμματα θα πρέπει να μπορούν να τρέξουν σε άλλες αρχιτεκτονικές που χρησιμοποιούν διαφορετικό σχήμα καταλόγου.

Για αυτό το σκοπό ορίστηκαν οι σχετικές διαδρομές σε αντιπαραβολή με τις απόλυτες διαδρομές (relative και asbolute paths). Η διαφορά είναι ότι για τις σχετικές διαδρομές είναι απαραίτητος και ο ορισμός ενός σημείου αναφοράς. Χωρίς το σημείο αναφοράς δεν είναι δυνατός ο καθορισμός της θέσης του αρχείου με μονοσήμαντο τρόπο. Στην ουσία, το σημείο αναφοράς είναι ένας κατάλογος του δέντρου καταλόγων (directory tree) του συστήματος στο οποίο μετακινούμαστε κατά βούληση μέσα στο κέλυφος, έχοντας ως αρχή τον βασικό κατάλογο “/”. Αυτό το σημείο αναφοράς ονομάζεται Τρέχων Κατάλογος (current directory). Κάθε κέλυφος έχει έναν τρέχοντα κατάλογο, τον οποίο μπορούμε να μάθουμε με την εντολή pwd.

feanor@silmaril:/home/feanor$ pwd
/home/feanor

Για παράδειγμα, η διαδρομή /var/log/syslog είναι απόλυτη, ενώ σχετική είναι η διαδρομή log/syslog, με τρέχοντα κατάλογο το /var. Εδώ πρέπει να τονισθεί ότι οι σχετικές διαδρομές εξαρτώνται πάντοτε από τον τρέχοντα κατάλογο του κελύφους.
Έτσι, κάθε πρόγραμμα ή εντολή που εκτελείται, χρησιμοποιεί ως σημείο αναφοράς τον τρέχοντα κατάλογο και έχει πρόσβαση στα αρχεία του καταλόγου αυτού χωρίς να χρησιμοποιεί το πλήρες όνομά τους. Αυτό έχει το πλεονέκτημα ότι μεταφέροντας το πρόγραμμα αυτό σε κάποιο άλλο κατάλογο του ίδιου ή ακόμη και διαφορετικού συστήματος με διαφορετική δομή καταλόγων, θα τρέξει χωρίς πρόβλημα.

Στο UNIX έχει οριστεί ένας ειδικός συμβολισμός για τον τρέχοντα κατάλογο, η τελεία “.”. Έτσι κάθε αρχείο file του τρέχοντος καταλόγου μπορεί να προσπελαστεί με το όνομα ./file.

Με το ίδιο σκεπτικό, έχει οριστεί να συμβολίζεται και ο γονικός κατάλογος (δηλαδή ο κατάλογος πρίν από τον τρέχοντα στο δέντρο δομής καταλόγων, parent directory) με δύο τελείες “..”.

Για παράδειγμα, αν ο τρέχων κατάλογος είναι /var/log, το αρχείο syslog μπορεί να προσπελαστεί ως ./syslog, ενώ ο γονικός κατάλογος είναι /var.

Αντίστοιχα, αν ο τρέχων κατάλογος είναι πάλι /var/log, το αρχείο /var/mail/root μπορεί να προσπελαστεί ως ../mail/root.

0
Your rating: None