Linux Bash: Μεταβλητές Περιβάλλοντος, PATH και Ρυθμίσεις
Οι μεταβλητές περιβάλλοντος (environment variables) αποθηκεύουν ρυθμίσεις που μπορούν να χρησιμοποιούν το Shell και οι εφαρμογές, όπως διαδρομές εκτελέσιμων, γλώσσα, προσωρινούς καταλόγους και παραμέτρους εκτέλεσης. Στο Bash μπορείς να ορίζεις μεταβλητές, να τις εξάγεις σε child processes και να διαμορφώνεις τη συμπεριφορά του shell μέσω αρχείων ρυθμίσεων.
Προβολή μεταβλητών
Εμφανίζει όλες τις μεταβλητές περιβάλλοντος.
printenv
Εμφανίζει μία συγκεκριμένη μεταβλητή.
printenv HOME
Εμφανίζει μεταβλητές και συναρτήσεις του Bash.
set
Εμφανίζει την τιμή μιας μεταβλητής.
echo "$HOME"
Δημιουργία και εξαγωγή μεταβλητών
Δημιουργεί shell variable για την τρέχουσα συνεδρία.
APP_MODE=development
Εξάγει μεταβλητή ώστε να είναι διαθέσιμη σε child processes.
export APP_MODE=development
Εξάγει υπάρχουσα μεταβλητή.
export APP_MODE
Αφαιρεί μεταβλητή από το περιβάλλον.
unset APP_MODE
Στο Bash δεν πρέπει να υπάρχουν κενά γύρω από το = κατά την ανάθεση. Η απλή ανάθεση δημιουργεί shell variable, ενώ το export την κάνει environment variable για διεργασίες που ξεκινούν από το συγκεκριμένο shell.
Χρήση μεταβλητών σε εντολές
PROJECT_DIR="$HOME/projects/myapp"
mkdir -p "$PROJECT_DIR"
printf 'Project path: %s\n' "$PROJECT_DIR"
Χρησιμοποίησε διπλά εισαγωγικά γύρω από μεταβλητές όταν περιέχουν paths ή τιμές με κενά. Το ${VARIABLE} βοηθά να ξεχωρίζει καθαρά το όνομα μεταβλητής από γειτονικούς χαρακτήρες.
Η μεταβλητή PATH
Η PATH περιέχει καταλόγους στους οποίους το Shell αναζητά εκτελέσιμα προγράμματα όταν πληκτρολογείς μια εντολή χωρίς πλήρη διαδρομή.
Εμφανίζει το PATH.
echo "$PATH"
Εμφανίζει έναν κατάλογο ανά γραμμή.
printf '%s\n' "${PATH//:/\n}"
Προσθέτει προσωρινά κατάλογο στην αρχή του PATH.
export PATH="$HOME/bin:$PATH"
Εντοπίζει από πού εκτελείται μια εντολή.
command -v python3
Απόφυγε να προσθέτεις μη έμπιστους ή εγγράψιμους από όλους καταλόγους στο PATH. Μια κακόβουλη εκτελέσιμη με το ίδιο όνομα μπορεί να εκτελεστεί αντί για το αναμενόμενο πρόγραμμα.
Προσωρινές και μόνιμες ρυθμίσεις
Οι μεταβλητές που ορίζονται απευθείας στο Terminal ισχύουν συνήθως μόνο για την τρέχουσα συνεδρία. Για να φορτώνονται σε επόμενες συνεδρίες, μπορείς να τις προσθέσεις στο κατάλληλο αρχείο εκκίνησης του shell.
~/.bashrc
Το ~/.bashrc χρησιμοποιείται συνήθως από interactive μη-login Bash shells. Είναι κατάλληλο για aliases, shell functions και ρυθμίσεις prompt.
~/.profile
Το ~/.profile διαβάζεται σε login sessions από shells που ακολουθούν τη σχετική σύμβαση. Είναι συνηθισμένο σημείο για ρυθμίσεις περιβάλλοντος χρήστη.
~/.bash_profile και ~/.bash_login
Σε login Bash, αν υπάρχει ~/.bash_profile, χρησιμοποιείται αντί για ~/.bash_login και ~/.profile. Πολλά συστήματα ρυθμίζουν το ~/.bash_profile ώστε να φορτώνει και το ~/.bashrc.
Επεξεργασία αρχείων ρυθμίσεων
nano ~/.bashrc
Πρόσθεσε στο τέλος του αρχείου μόνο τις ρυθμίσεις που χρειάζεσαι. Για παράδειγμα:
export EDITOR=nano
export PROJECT_ENV=development
alias ll='ls -lah'
Φόρτωσε ξανά τις ρυθμίσεις στην τρέχουσα συνεδρία:
source ~/.bashrc
Aliases και συναρτήσεις Bash
Δημιουργεί προσωρινό alias για προβολή αρχείων.
alias ll='ls -lah'
Εμφανίζει τα ορισμένα aliases.
alias
Αφαιρεί alias από την τρέχουσα συνεδρία.
unalias ll
Για μόνιμη χρήση, τοποθέτησε τα aliases στο ~/.bashrc. Για πιο σύνθετες επαναλαμβανόμενες λειτουργίες μπορείς να δημιουργήσεις Bash function.
mkcd() {
mkdir -p -- "$1" && cd -- "$1"
}
Μεταβλητές και υποκατάσταση
Εμφανίζει τον προσωπικό κατάλογο χρήστη.
echo "$HOME"
Εμφανίζει το τρέχον shell.
echo "$SHELL"
Εμφανίζει το όνομα χρήστη.
echo "$USER"
Εμφανίζει τον προσωρινό κατάλογο.
echo "$TMPDIR"
Εκτελεί εντολή και αποθηκεύει το αποτέλεσμα.
KERNEL=$(uname -r)
Ασφαλής χρήση secrets
Μην αποθηκεύεις API keys, passwords ή tokens σε αρχεία που ανεβαίνουν σε Git repositories ή είναι προσβάσιμα από άλλους χρήστες. Χρησιμοποίησε κατάλληλο secret manager ή προστατευμένο αρχείο ρυθμίσεων με περιορισμένα permissions.
chmod 600 ~/.env
Το chmod 600 περιορίζει την πρόσβαση στο αρχείο στον ιδιοκτήτη. Δεν αποτελεί από μόνο του ολοκληρωμένο σύστημα διαχείρισης secrets.
Έλεγχος ρυθμίσεων Bash
Εμφανίζει την έκδοση Bash.
bash --version
Εμφανίζει ποιο configuration αρχείο φορτώνει μια login συνεδρία μέσω του περιβάλλοντος.
shopt -q login_shell && echo login || echo non-login
Εμφανίζει το ιστορικό εντολών.
history
Ελέγχει τη σύνταξη ενός Bash script χωρίς να το εκτελέσει.
bash -n script.sh
Μόνιμες μεταβλητές περιβάλλοντος ανά χρήστη
Οι μεταβλητές περιβάλλοντος μπορούν να οριστούν προσωρινά στο τρέχον shell, για μία εντολή ή μόνιμα στα αρχεία εκκίνησης του shell. Σε Bash, το ~/.bashrc χρησιμοποιείται συνήθως για interactive shells, ενώ το ~/.profile ή ~/.bash_profile μπορεί να χρησιμοποιείται κατά τη σύνδεση. Η ακριβής συμπεριφορά εξαρτάται από το αν το shell είναι login ή interactive.
# Προσωρινή μεταβλητή
export APP_ENV=development
# Προβολή τιμής
printf '%s\n' "$APP_ENV"
# Προσθήκη προσωπικού bin στο PATH
export PATH="$HOME/.local/bin:$PATH"
# Έλεγχος διαδρομής εντολής
command -v python3PATH: συχνά λάθη και έλεγχος
Αν μια εντολή λειτουργεί με πλήρη διαδρομή αλλά όχι με το όνομά της, έλεγξε αν ο κατάλογος βρίσκεται στο PATH και αν το αρχείο έχει δικαίωμα εκτέλεσης. Απόφυγε να προσθέτεις μη έμπιστους καταλόγους στην αρχή του PATH, ειδικά για λογαριασμούς διαχειριστή.