Overzicht van which
`which` geeft aan waar het uitvoerbare bestand van de opdracht die de gebruiker in de terminal invoert (bijvoorbeeld `ls`, `python`, `nginx`) zich daadwerkelijk bevindt. Het werkt door de directories die zijn ingesteld in de `PATH` omgevingsvariabele één voor één te doorzoeken en geeft het absolute pad van het eerste gevonden uitvoerbare bestand weer. Als de opdracht niet wordt gevonden, wordt er niets weergegeven of verschijnt er een foutmelding.
Hoofdfuncties van which
`which` wordt voornamelijk gebruikt voor de volgende doeleinden:
Belangrijkste toepassingsgebieden
- Locatie van opdracht controleren: Controleert waar het uitvoerbare bestand van de opgegeven opdracht zich bevindt in de paden die zijn gedefinieerd in de `PATH` omgevingsvariabele.
- Versiebeheer: Wanneer er meerdere versies van een programma met dezelfde naam zijn geïnstalleerd, bepaalt het welke versie in de huidige shell-omgeving wordt uitgevoerd.
- Controleer op aanwezigheid van programma in scripts: Controleert in een shell-script of een specifiek programma is geïnstalleerd en kan logica implementeren om dit te installeren of fouten te behandelen als het niet aanwezig is.
- Debugging van de `PATH` omgevingsvariabele: Controleert of de `PATH` instellingen correct zijn of of een specifieke directory in de `PATH` is opgenomen, zodat opdrachten correct kunnen worden gevonden.
Begrip van de `PATH` omgevingsvariabele
Om de werking van de `which` opdracht te begrijpen, is het essentieel om de `PATH` omgevingsvariabele te begrijpen. `PATH` is een omgevingsvariabele die een door dubbele punten (`:`) gescheiden lijst van directories opslaat waarin de shell zoekt naar uitvoerbare bestanden wanneer opdrachten worden uitgevoerd. De shell zoekt naar opdrachten in de volgorde waarin ze in de `PATH` zijn vermeld.
Controleer de `PATH` omgevingsvariabele
echo $PATH
Je kunt de waarde van de `PATH` omgevingsvariabele die momenteel in de shell is ingesteld controleren met de `echo` opdracht.
Belangrijkste opties van de which opdracht
`which` is een eenvoudige opdracht, maar biedt nuttige opties zoals het vinden van alle overeenkomsten of het negeren van aliassen en functies.
1. Basis zoekopdracht
2. Zoekopdracht beheersopties
Gegenereerde opdracht:
Probeer de opdrachtcombinaties.
Uitleg:
`which` Voer het commando uit.
Combineer deze opties en voer de opdracht virtueel uit met de AI.
Voorbeeldgebruik
Leer hoe je de locatie van uitvoerbare opdrachten in het systeem efficiënt kunt bepalen aan de hand van verschillende voorbeelden van het gebruik van de `which` opdracht.
Vind de uitvoerbare bestand van de `ls` opdracht
which ls
Geeft het absolute pad weer waar de `ls` opdracht zich daadwerkelijk bevindt (meestal `/usr/bin/ls`).
Vind alle uitvoerbare bestanden van de `python` opdracht
which -a python
Als er meerdere versies van de `python` uitvoerbare bestanden zijn geïnstalleerd (bijvoorbeeld `python2`, `python3`), geeft het alle overeenkomende paden in de `PATH` weer.
Controleer of een opdracht bestaat (gebruik in scripts)
if which grep > /dev/null; then
echo "grep opdracht is geïnstalleerd."
else
echo "grep opdracht kan niet worden gevonden. Installatie is vereist."
fi
Dit is een voorbeeld dat controleert of de `grep` opdracht is geïnstalleerd in het systeem en afhankelijk daarvan andere acties uitvoert.
Vind de daadwerkelijke binaire locatie van de `sudo` opdracht
which --skip-alias --skip-functions sudo
`sudo` kan vaak als alias of shell-functie zijn gedefinieerd, maar met `--skip-alias` en `--skip-functions` kun je de werkelijke uitvoerbare bestandspad vinden.
Zoeken naar een niet-bestaande opdracht
which nonexistent_command
Wanneer je met `which` naar `nonexistent_command` zoekt dat niet op het systeem is geïnstalleerd, wordt er niets weergegeven. Foutmeldingen kunnen worden weergegeven door ze te redirecten met `2>&1`.