<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-7">
  <title></title>
</head>
<body text="#000000" bgcolor="#ffffff">
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-7">
<title></title>
Giannis Stoilis wrote:<br>
<blockquote type="cite" cite="mid3FAF4B9B.3080205@stoilis.gr">Thanos
wrote: <br>
  <blockquote type="cite">Πολλα προγραμματα, εκτελουνται απο μια
κονσολα δινοντας π.χ. "mozilla" ή "./mozilla". Καποια δουλευουν μονο με
το πρωτο και αλλα μονο με το δευτερο. <br>
    <br>
Μηπως θα μπορουσε καποιος/α να μου εξηγησει τι σημαινουν ολα αυτα και
αν υπαρχει διαφορα στο να τρεχεις ενα προγραμμα με ή χωρις το "./"; <br>
  </blockquote>
  <br>
Το PATH είναι μια μεταβλητή περιβάλλοντος, που ορίζει το ΠΟΥ να ψάχνει
να βρει ένα executable που πας να τρέξεις, όταν δεν ορίζεις full path. <br>
  <br>
Π.χ, θέλεις να τρέξεις την εντολή "cp". <br>
  <br>
Όταν γράψεις "cp" σε γραμμή εντολών θα γίνει το εξής: <br>
  <br>
linapp:~ # cp <br>
cp: missing file argument <br>
Try `cp --help' for more information. <br>
linapp:~ # <br>
  <br>
Πράγματι, την βρήκε και την έτρεξε. Ας δούμε το PATH σου τι έχει μέσα: <br>
linapp:~ # echo $PATH <br>
/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin <br>
linapp:~ # <br>
  <br>
Ας δούμε τώρα ΠΟΥ βρίσκετε αυτή η εντολή: <br>
linapp:~ # which cp <br>
/bin/cp <br>
linapp:~ # <br>
  <br>
Άρα, βλέπουμε ότι βρίσκεται στον /bin. <br>
  <br>
Ας ΒΓΑΛΟΥΜΕ το /bin/ από το PATH, και ας ξανατρέξουμε την εντολή, να
δούμε τι θα γίνει: <br>
  <br>
linapp:~ # export
PATH=/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin <br>
linapp:~ # cp <br>
-bash: cp: command not found <br>
linapp:~ # <br>
  <br>
Όπως βλέπεις, δεν την βρήκε. Ας πάμε τώρα ΜΕΣΑ στον κατάλογο που έχει
το cp, να το εκτελέσουμε από εκεί: <br>
  <br>
linapp:~ # cd /bin <br>
linapp:/bin # cp <br>
-bash: cp: command not found <br>
linapp:/bin # <br>
  <br>
Γιατί δεν το εκτέλεσε; Γιατι δεν έχει σημασία αν είναι μέσα στον ίδιο
τον κατάλογο. Αν δεν βρίσκεται ένας φάκελος μέσα στο PATH, δεν θα γίνει
έλεγχος αν έχει την εντολή που ζήτησες. Ένα κολπάκι που χρησιμοποιούμε,
είναι να βάλουμε στο PATH αυτό: ".". Αυτό σημαίνει ότι όταν τρέχεις μια
εντολή, να ψάχνει πάντα και στον κατάλογο που βρίσκεσαι. <br>
  <br>
Μετά από αυτά τα παραδείγματα, ξαναγυρνάω στην ερώτησή σου. Γιατί δεν
βάζουμε το "." ΠΑΝΤΑ στο PATH; Γιατί είναι επικίνδυνο. Π.χ, μπορώ εγώ ο
κακός ο χρήστης να αφήσω μέσα στο /tmp/ ένα εκτελέσιμο που θα
ονομάζεται "cp" το οποίο θα σβήνει στιγμιαία όλα τα δεδομένα του
υπολογιστή. Όταν ο root είναι μέσα στο /tmp και εκτελέσει την εντολή
"cp", και έχει το current directory πρώτο μέσα στο PATH του, την
πάτησε. <br>
  <br>
Οπότε, ο γενικός κανόνας είναι: <br>
Ο root δεν πρέπει να έχει το current directory μέσα στο PATH του. Όταν
εκτελεί πράγματα, τα εκτελέι μόνο μέσα με απόλυτο ή σχετικό path, π.χ:
./mozilla, ../mozilla, /usr/local/mozilla/mozilla. Επιτρέπεται να έχει
στο path τους βασικούς καταλόγους. <br>
Ο απλός χρήστης ας έχει μέσα ότι θέλει, επειδή δεν μπορεί να κάνει
ζημιά στο σύστημα. <br>
  <br>
Ουφ, tutorial το έκανα... Ελπίζω να άξιζε τουλάχιστον... <br>
  <br>
- Γιάννης Στοΐλης <br>
  <br>
  <br>
  <br>
</blockquote>
Εγω βρε παιδια ηθελα να κανω μονο ενα symbolic link καποιων
προγραμματων στο /usr/bin/ και δεν ηξερα αν πρεπει να βαλω "." ή οχι
στο path του αρχειου και κοιταξτε τι εμαθα!<br>
<br>
Ευχαριστω ολους!<br>
</body>
</html>


____________________________________________________________________
http://www.freemail.gr - δωρεάν υπηρεσία ηλεκτρονικού ταχυδρομείου.
http://www.freemail.gr - free email service for the Greek-speaking.