Wat Is de Unix-PAD, en Hoe U Programma ‘ s Toevoegen Aan het?

De Unix-PAD is een omgevingsvariabele dat vertelt de shell die mappen moet letten als je commando ‘ s. Je kunt het zien als een lijst van Toepassing of Program Files mappen.

Wat Betekent Het PAD Doen?

Als je wilde naar een binair bestand in de huidige map, je zou hebben om een relatief pad, zoals:

./opdracht [args]

Maar, als u dat binaire van een map zoals /usr/local/bin/ u in plaats daarvan typ gewoon de naam van de opdracht uit te voeren:

opdracht [args]

Dit is omdat de /usr/local/bin/ is op het PAD. De shell weet om te kijken in die map als je geen locatie opgeeft. Veel commando ‘ s zijn geïnstalleerd, en in soortgelijke mappen. U kunt zien welke mappen op je PAD door de echo van de variabele zelf, met behulp van de $ prefix:

echo $PATH

Standaard echter, de variabele PATH is een lijst van directory namen gescheiden door dubbele punten. Het is niet erg leesbaar:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Maar, met een beetje regex, kunt u het afdrukken van een lijst:

echo $PATH | sed ‘ $’s/:/\n/g’

Deze mappen dienen verschillende doeleinden:

  • Mappen eindigt in het bin zijn voor algemeen gebruik, mappen eindigt in sbin zijn bedoeld voor de administratie van het systeem commando ‘ s, dingen die op het systeem wordt uitgevoerd, maar u zult waarschijnlijk niet interageren met veel. Maar er zijn
  • /bin en /sbin zijn bedoeld voor programma ‘ s die het systeem nodig heeft voor /usr is beschikbaar. Dit is de plaats waar belangrijke programma ‘ s, zoals sh en ls zijn opgeslagen.
  • /usr/bin en /usr/sbin zijn voor de normale gebruiker programma ‘ s, meestal ingebouwd in het OS.
  • /usr/local/bin en /usr/local/sbin zijn voor programma ‘ s die u hebt gedownload of zelf samengesteld. Als u een binair bestand dat u hebt gedownload, en weet niet waar te plaatsen, chuck het in /usr/local/bin.

/usr/local/sbin kan zelfs niet bestaan op uw systeem, als het is nogal tegenstrijdig in de natuur. Het is niet aanwezig op macOS, maar bevat een paar programma ‘ s op Ubuntu.

U kunt zien welke mappen de verschillende commando ‘ s bevinden zich in met het commando:

die ls

Die print uit het volledige pad naar het opgegeven commando.

Hoe om Mappen toe Te Voegen Aan Het PAD

Een map toevoegen aan het PAD is eenvoudig, je hoeft alleen de variabele instellen. Maar je kunt het niet overschrijven van het geheel, zodat je in plaats van een map toevoegen aan de voorzijde van het PAD:

PATH=~/map:$PATH

U kunt ook tack de map op de rug van de PAD:

PATH=$PATH:~/map

Deze verschillende vormen van gebruik. Mappen dicht bij het front zal eerst worden gecontroleerd, dus als er dubbele opdrachten (bijvoorbeeld twee versies van Python, die beide de naam “python”) het toevoegen van de map naar de voorkant zal ervoor zorgen dat de map die u handmatig hebt toegevoegd zal worden gecontroleerd. De meeste van de tijd, dit is waarschijnlijk wat je wilt.

Meestal zult u dit definiëren in uw shell profiel, die de variabele instellen wanneer u een nieuwe terminal. Als je gebruik maakt van bash, dit is beide .bash_profile of .bashrc. Als u een shell zoals zsh, zal dit een ander bestand (.zshrc in dit geval). Als er al een definitie, kunt u de map naar de voorkant van de lijst, gescheiden door een dubbele punt.

Overweeg Het Gebruik Van Symlinks

Inplaats van het toevoegen van een map direct, u kunt in plaats hiervan een symbolische link naar specifieke commando ‘ s, en plaats de symlink in/usr/local/bin. Bijvoorbeeld, Python geïnstalleerd in een eigen map, maar in plaats van het toevoegen van die map naar de PAD, het maakt gebruik van een symlink. Kunt u zien waar symlinks leiden met ls -la:

ls -la $(die python)

En u kunt het maken van symbolische links met ln:

ln -s commando /usr/local/bin/commando

Het PAD Kan Veranderen

Sinds de PATH-variabele wordt meestal gedefinieerd in .bashrc, uw PAD kan anders zijn wanneer ze worden uitgevoerd in een andere omgeving. Dit is vooral van belang als u in een bash-script, of als u het uitvoeren van een opdracht via cron. Als je met “command not found” problemen, zult u wilt om te controleren of het PAD juist is ingesteld in de omgeving die u uitgevoerd.


Posted

in

by

Tags: