Direnv - Διαχείριση μεταβλητών περιβάλλοντος για συγκεκριμένο έργο στο Linux
Το direnv είναι μια εξαιρετική επέκταση ανοιχτού κώδικα για το κέλυφός σας σε λειτουργικό σύστημα UNIX όπως το Linux και το macOS. Μεταγλωττίζεται σε ένα μόνο στατικό εκτελέσιμο και υποστηρίζει κελύφη όπως bash, zsh, tcsh και fish.
Ο κύριος σκοπός του direnv είναι να επιτρέψει μεταβλητές περιβάλλοντος για συγκεκριμένο έργο χωρίς να γεμίζουν ~/.profile
ή σχετικά αρχεία εκκίνησης φλοιού. Εφαρμόζει έναν νέο τρόπο φόρτωσης και εκφόρτωσης μεταβλητών περιβάλλοντος ανάλογα με τον τρέχοντα κατάλογο.
Χρησιμοποιείται για τη φόρτωση των εφαρμογών 12 παραγόντων (μια μεθοδολογία για τη δημιουργία εφαρμογών λογισμικού ως υπηρεσίας) μεταβλητών περιβάλλοντος, για τη δημιουργία περιβαλλόντων ανάπτυξης μεμονωμένων ανά έργο, καθώς και για τη φόρτωση μυστικών για ανάπτυξη. Επιπλέον, μπορεί να χρησιμοποιηθεί για τη δημιουργία λύσεων εγκατάστασης και διαχείρισης πολλών εκδόσεων παρόμοιες με τα rbenv, pyenv και phpenv.
Πώς λειτουργεί λοιπόν το direnv;
Πριν το κέλυφος φορτώσει μια γραμμή εντολών, το direnv ελέγχει για την ύπαρξη ενός αρχείου .envrc
στον τρέχοντα (το οποίο μπορείτε να εμφανίσετε χρησιμοποιώντας την εντολή pwd) και τον γονικό κατάλογο. Η διαδικασία ελέγχου είναι γρήγορη και δεν γίνεται αντιληπτή σε κάθε προτροπή.
Μόλις βρει το αρχείο .envrc
με τα κατάλληλα δικαιώματα, το φορτώνει σε ένα δευτερεύον φλοιό bash και καταγράφει όλες τις εξαγόμενες μεταβλητές και τις καθιστά διαθέσιμες στο τρέχον κέλυφος.
Εγκατάσταση του direnv σε συστήματα Linux
Στις περισσότερες διανομές Linux, το πακέτο direnv είναι διαθέσιμο για εγκατάσταση από τα προεπιλεγμένα αποθετήρια χρησιμοποιώντας τον διαχειριστή πακέτων του συστήματός σας, όπως φαίνεται.
sudo apt install direnv #Debian,Ubuntu and Mint
sudo dnf install direnv #Fedora
Σε άλλες διανομές όπως το Red Hat Enterprise Linux (RHEL) και το CentOS ή οποιαδήποτε διανομή που υποστηρίζει snaps, μπορείτε να το εγκαταστήσετε ως snap. Αυτό απαιτεί να έχετε εγκατεστημένο το snapd στο σύστημά σας.
sudo snap install direnv
Πώς να συνδέσετε το direnv στο Bash Shell σας
Μετά την εγκατάσταση του direnv, πρέπει να το συνδέσετε στο τρέχον κέλυφος του Linux. Για παράδειγμα για το Bash, προσθέστε την ακόλουθη γραμμή στο τέλος του αρχείου ~/.bashrc
.
Βεβαιωθείτε ότι εμφανίζεται ακόμη και μετά από rvm, git-prompt και άλλες επεκτάσεις φλοιού που χειρίζονται το μήνυμα.
eval "$(direnv hook bash)"
Για το ZSH Shell
Προσθέστε την ακόλουθη γραμμή στο τέλος του αρχείου ~/.zshrc
:
eval "$(direnv hook zsh)"
Για το FISH Shell
Προσθέστε την ακόλουθη γραμμή στο τέλος του αρχείου ~/.config/fish/config.fish
:
eval (direnv hook fish)
Στη συνέχεια, κλείστε το παράθυρο του ενεργού τερματικού και ανοίξτε ένα νέο κέλυφος ή δημιουργήστε το αρχείο όπως φαίνεται.
source ~/.bashrc
source ~/.zshrc
source ~/.config/fish/config.fish
Πώς να χρησιμοποιήσετε το direnv στο Linux Shell
Για να δείξουμε πώς λειτουργεί το direnv, θα δημιουργήσουμε έναν νέο κατάλογο που ονομάζεται tecmint_projects
και θα μεταφερθούμε σε αυτόν.
mkdir ~/tecmint_projects
cd tecmint_projects/
Στη συνέχεια, ας δημιουργήσουμε μια νέα μεταβλητή που ονομάζεται TEST_VARIABLE
στη γραμμή εντολών και όταν επαναληφθεί, η τιμή θα πρέπει να είναι κενή:
echo $TEST_VARIABLE
Τώρα θα δημιουργήσουμε ένα νέο αρχείο .envrc
που περιέχει κώδικα Bash που θα φορτωθεί από το direnv. Προσπαθούμε επίσης να προσθέσουμε τη γραμμή "εξαγωγή του TEST_VARIABLE=tecmint " σε αυτήν χρησιμοποιώντας την εντολή echo και τον χαρακτήρα ανακατεύθυνσης εξόδου (>)
:
echo export TEST_VARIABLE=tecmint > .envrc
Από προεπιλογή, ο μηχανισμός ασφαλείας αποκλείει τη φόρτωση του αρχείου .envrc
. Επειδή γνωρίζουμε ότι είναι ασφαλές αρχείο, πρέπει να εγκρίνουμε το περιεχόμενό του εκτελώντας την ακόλουθη εντολή:
direnv allow .
Τώρα που έχει επιτραπεί η φόρτωση του περιεχομένου του αρχείου .envrc
, ας ελέγξουμε την τιμή του TEST_VARIABLE
που ορίσαμε προηγουμένως:
echo $TEST_VARIABLE
Όταν βγαίνουμε από τον κατάλογο tecmint_project
, το direnv θα ξεφορτωθεί και αν ελέγξουμε ξανά την τιμή του TEST_VARIABLE
, θα πρέπει να είναι κενό:
cd ..
echo $TEST_VARIABLE
Κάθε φορά που μετακινείστε στον κατάλογο tecmint_projects, το αρχείο .envrc
θα φορτώνεται όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης:
cd tecmint_projects/
Για να ανακαλέσετε την εξουσιοδότηση ενός δεδομένου .envrc
, χρησιμοποιήστε την εντολή άρνηση.
direnv deny . #in current directory
OR
direnv deny /path/to/.envrc
Για περισσότερες πληροφορίες και οδηγίες χρήσης, ανατρέξτε στη σελίδα χρήστη direnv:
man direnv
Επιπλέον, το direnv χρησιμοποιεί επίσης ένα stdlib (direnv-stdlib) διαθέτει πολλές λειτουργίες που σας επιτρέπουν να προσθέτετε εύκολα νέους καταλόγους στο σας PATHκαι κάντε πολλά ακόμα.
Για να βρείτε την τεκμηρίωση για όλες τις διαθέσιμες λειτουργίες, ελέγξτε τη σελίδα μη αυτόματης εισαγωγής direnv-stdlib:
man direnv-stdlib
Αυτό ήταν το μόνο που είχαμε για εσάς! Εάν έχετε οποιεσδήποτε ερωτήσεις ή σκέψεις να μοιραστείτε μαζί μας, χρησιμοποιήστε την παρακάτω φόρμα σχολίων.