Automatisch padspecifieke acties met direnv

linux tools

Artikelgereedschap

  • Tip ons
  • Printen
  • Reacties (0)
Aanbevelen

Gepubliceerd: Dinsdag 24 januari 2012
Auteur: Koen Vervloesem

Als je allerlei omgevingsvariabelen moet instellen, afhankelijk van waar je mee bezig bent, dan is direnv een efficiënte oplossing. Met dit Bash-script voer je per directory specifieke acties uit.

Direnv (voorheen shell-env) kan allereerst de waarde van omgevingsvariabelen afhankelijk maken van de directory waarin je je bevindt. Dat is in heel wat omstandigheden handig, bijvoorbeeld als je meerdere projecten hebt die van Amazon Web Services (AWS) gebruikmaken en je je AWS-sleutels in omgevvingsvariabelen opgeeft.

Normaal geef je die omgevingsvariabelen op in een bestand .ec2rc of .eucarc en source je dit handmatig, maar met direnv kunt je deze omgevingsvariabelen automatisch laden als je met cd naar een directory gaat. Andere handige toepassingen zijn het laden van extra paden in de omgevingsvariabele $PATH afhankelijk van de directory waarin je je bevindt, en het uitvoeren van willekeurige acties van het moment dat je in een specifieke directory komt.

Installatie

Direnv is nog niet als pakket te installeren in de meeste Linux-distributies, maar kan eenvoudig geïnstalleerd worden. Download de code via git en installeer het:


$ git clone http://github.com/zimbatm/direnv
$ cd direnv
~/direnv$ sudo make install

Controleer ook of je Ruby geïnstalleerd hebt, want daarvan maakt direnv gebruik. Voeg daarna helemaal achteraan je ~/.bashrc (of ~/.zshrc, want de Zsh shell is ook ondersteund) het volgende toe:


eval `direnv hook $0`

Hoe het werkt

Direnv haakt zich in op je shell via het mechanisme om code uit te voeren vlak voordat de prompt getoond wordt. Direnv kijkt dan in welke directory je je bevindt en of je daar een bestand .envrc hebt staan. Indien dit bestand gevonden wordt, wordt je oude omgeving ENV geback-upt in DIRENV_BACKUP en worden de opdrachten in .envrc door direnv geëvalueerd. Als je later weer naar een andere directory cd't, wordt je oude omgeving hersteld en zoekt direnv weer naar een .envrc in de nieuwe directory. Wanneer je je .envrc aanast, wordt deze automatisch opnieuw geladen door direnv.

In .envrc, dat eigenlijk een shell-script is, heb je toegang tot een aantal handige functies van direnv. Zo kun je bijvoorbeeld eenvoudig controleren of een bepaalde binary in je $PATH aanwezig is:


if has ruby; then
echo "You have Ruby."
fi

Maar het interessantste is de functie PATH_add, waarmee je in je .envrc specifieke paden aan de omgevingsvariabele toevoegt, bijvoorbeeld:


PATH_add bin

Je kunt ook een .envrc van een andere directory laden, bijvoorbeeld van de moederdirectory om de omgevingsvariabelen daarvan over te erven:


source_env ..

Verder zijn er enkele functies om met Ruby en rvm te werken. En uiteraard is .envrc gewoon een shell-script waar je dus allerlei commando's in kunt ingeven die voor een specifieke directory uitgevoerd moeten worden. Het eenvoudigste voorbeeld hiervan is een omgevingsvariabele met een specifieke waarde, zoals:


export AWS_ACCESS_KEY_ID=foobar

Deze omgevingsvariabele heeft dan enkel die waarde als je in de directory met deze .envrc bent.

Lees de man-pagina voor meer hulp. Op de wiki vind je ook nog allerlei informatie, waaronder tips om direnv te gebruiken voor Ruby-projecten, in combinatie met Pythons virtualenv en voor OpenEmbedded-projecten.

De rubriek Tips & Tools biedt praktische informatie die IT-professionals in hun dagelijkse werk kunnen toepassen.

Relevante whitepapers

Alle whitepapers >>

Totaal 0 reactiesLaatste reacties


Nieuwsbrief

Ontvang dagelijks een overzicht van het laatste ICT-Nieuws in uw mailbox

Whitepapers

  • Maximaliseer het voordeel van SaaS

    Cloud-applicaties hebben grote invloed op het gebruik van de IT-architectuur en niet ieder project levert de verwachte voordelen op.

    Downloaden
  • Flexibele IT noodzaak voor bankenOnderzoeksrapport over de beperkte flexibiliteit van veel IT-systemen in de bancaire wereld. Lees meer!
  • Kostenbesparing voor long tail appsOplossing voor kostenkwesties in VDI. Technologie geschikt voor long tail apps.
» Meer whitepapers

Peiling

Loading Poll

Video: Review: HTC One X-smartphone met vijf...

Review: HTC One X-smartphone met vijf cores (video)