Startpagina > Bestands- en mapbeheer > which

which opdrachtgids: De locatie van uitvoerbare opdrachten vinden

`which` is een opdracht die wordt gebruikt op Linux en Unix-achtige besturingssystemen om te bepalen waar een specifieke opdracht (uitvoerbaar bestand) zich bevindt in de directories die zijn opgegeven in de `PATH` omgevingsvariabele, oftewel welke opdracht zal worden uitgevoerd. Het is zeer handig om de aanwezigheid van een programma in een shell-script te controleren of om te begrijpen welke van de verschillende versies van een programma met dezelfde naam zal worden uitgevoerd. Leer hoe je de `which` opdracht en de belangrijkste opties kunt gebruiken met deze gids.

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`.


Hétzelfde categoriecommando