Ανώνυμος χρήστης
Περισσότερα
Πώς μπορώ να ορίσω μια μεταβλητή περιβάλλοντος χρήστη; (μόνιμα, όχι σε περίοδο λειτουργίας)
Αυτό με εκνευρίζει. Είδα αρκετές προτάσεις (όλες με διαφορετικά αρχεία και σύνταξη) και καμία από αυτές δεν λειτούργησε.
Πώς μπορώ να ορίσω μια μεταβλητή περιβάλλοντος για έναν συγκεκριμένο χρήστη; Είμαι σε debian squeeze. Ποια είναι η ακριβής σύνταξη που πρέπει να βάλω στο αρχείο για να κάνω ABC = "123"?
145
3
Πρέπει να τοποθετήσετε τη δήλωση στα αρχεία αρχικοποίησης του κελύφους σας:
Αν χρησιμοποιείτε bash, ash, ksh ή κάποιο άλλο κέλυφος τύπου Bourne, μπορείτε να προσθέσετε
στο αρχείο σας
.profile
(${HOME}/.profile
). Αυτή είναι η προεπιλεγμένη κατάσταση στις περισσότερες εγκαταστάσεις Unix, και ειδικότερα στο Debian.Αν το κέλυφος σύνδεσης είναι το bash, μπορείτε να χρησιμοποιήσετε το αρχείο
.bash_profile
(${HOME}/.bash_profile
) ή το αρχείο.bash_login
αντί αυτού.Σημείωση: Αν υπάρχει κάποιο από αυτά τα αρχεία και το κέλυφος σύνδεσής σας είναι bash, το
.profile
δεν διαβάζεται όταν συνδέεστε μέσω ssh ή σε μια κονσόλα κειμένου, αλλά μπορεί ακόμα να διαβαστεί αντί του.bash_profile
αν συνδεθείτε από το GUI. Επίσης, αν δεν υπάρχει το.bash_profile
, τότε χρησιμοποιήστε το.bashrc
.Αν έχετε ορίσει το zsh ως το κέλυφος σύνδεσης, χρησιμοποιήστε το
~/.zprofile
αντί του~/.profile
.Αν χρησιμοποιείτε tcsh, προσθέστε
στο αρχείο
.login
(${HOME}/.login
)Αυτή είναι μια γενική διαδικασία που μπορείτε να χρησιμοποιήσετε σχεδόν για κάθε κέλυφος. Σε κάθε περίπτωση, πρέπει να γνωρίζετε με ποιο κέλυφος θα συνδεόταν κανονικά ο χρήστης:
Στη συνέχεια, πρέπει να βρείτε ποια dot-files θα διάβαζε κανονικά αυτό το κέλυφος:
Μια συντόμευση που μπορεί να δουλέψει είναι να απαριθμήσετε εκείνα τα dot-files που περιέχουν το όνομα του κελύφους:
Αν θέλετε να ελέγξετε αν ένα από τα αρχεία διαβάζεται πραγματικά κατά τη διάρκεια της σύνδεσης, μπορείτε απλά να εκτυπώσετε το όνομα του αρχείου σε κάθε ένα από αυτά, για παράδειγμα:
Κατά την είσοδο, θα πρέπει τότε να δείτε ποια αρχεία διαβάζονται και μπορείτε να αποφασίσετε ποιο από αυτά να τροποποιήσετε. Προσέξτε ότι δεν θα πρέπει να προσπαθήσετε να χρησιμοποιήσετε το
echo "$0"
ή κάτι παρόμοιο, επειδή η τιμή του$0
εξαρτάται από τον τρόπο με τον οποίο το κέλυφος επεξεργάζεται τα dot-files, και θα μπορούσε να είναι παραπλανητική.Όταν πρόκειται για τη δήλωση της μεταβλητής "μόνιμα", σημειώστε ότι αυτό επεκτείνεται μόνο στη συνεδρία. Δεν υπάρχει κανένας τρόπος πρόσβασης στην τιμή μιας μεταβλητής χωρίς συνεδρία, οπότε δεν έχει καμία σημασία εκτός συνεδρίας. Αν εννοείτε "read-only", αυτό εξαρτάται από το κέλυφος, και στο Bash μπορείτε να χρησιμοποιήσετε:
αν έχει ήδη μια τιμή, ή
για να την εκχωρήσετε ταυτόχρονα. Δεν διαθέτουν όλα τα κελύφη αυτή τη δυνατότητα.
Για να δηλώσετε μια μεταβλητή στα περισσότερα κελύφη, θα πρέπει να χρησιμοποιήσετε ένα όνομα μεταβλητής (
[A-Za-z_][A-Za-z0-9_]*
), ακολουθούμενο από ένα σύμβολο ισότητας (και χωρίς κενά γύρω από το σύμβολο ισότητας), και στη συνέχεια μια τιμή (κατά προτίμηση σε εισαγωγικά εκτός αν η τιμή είναι ένα απλό[A-Za-z0-9_]+
). Για παράδειγμα:Χρησιμοποιήστε την εξαγωγή.
Για να ελέγξετε αν έχει οριστεί, χρησιμοποιήστε
ή/και
Για να το προσθέσετε μόνιμα, προσθέστε αυτό στο αρχείο σας
~/.bashrc
.