Ga naar inhoud

๐Ÿ› ๏ธ Het which Commando in Linux

In deze handleiding leer je hoe je which gebruikt op een Linux-systeem.

Het commando which wordt gebruikt om het pad van een uitvoerbaar commando te vinden dat in de shell beschikbaar is.
Het is handig om te controleren welke versie van een commando wordt uitgevoerd of waar een bepaald programma is geรฏnstalleerd.

Achtergrondinformatie

Het commando which is standaard aanwezig op vrijwel alle Unix/Linux-systemen.

  • which zoekt naar het opgegeven commando in de directories die in de $PATH-variabele staan.
  • Het geeft het volledige pad van het uitvoerbare bestand weer.
  • In de praktijk wordt which vaak gebruikt om conflicten tussen meerdere geรฏnstalleerde versies van een programma te controleren.

Controleren of which aanwezig is

Het which-commando staat bijna altijd standaard op je systeem geรฏnstalleerd.

Wil je controleren of which aanwezig is, dan kun je de versie opvragen:

which --version
Voorbeeldoutput
which (GNU which) 2.21
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.

โš™๏ธ Installeren van which

Het commando which kan op sommige minimale systemen handmatig geรฏnstalleerd worden.

Installatie op Debian/Ubuntu:

sudo apt update
sudo apt install which

Voorbeeldoutput
which (GNU which) 2.21
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.

Hieronder vind je enkele veelgebruikte combinaties van het which-commando:

  • which ls โ†’ Vind het pad van het ls-commando
Voorbeeld gebruik van which ls

Commando:

which ls
Voorbeeldoutput:
/bin/ls

  • which python3 โ†’ Vind het pad van het python3-commando
  • which -a python3 โ†’ Toon alle paden naar python3 die in $PATH voorkomen
  • -a โ†’ Toon alle overeenkomende paden, niet alleen de eerste
  • --version โ†’ Toon versie-informatie van which

Het which-commando heeft geen specifieke configuratie, maar je kunt aliassen maken:

1. Per gebruiker instellen

Voeg dit toe aan ~/.bashrc:

alias whichpython='which python3'

2. System-wide instellen

Plaats dezelfde alias in /etc/bash.bashrc of /etc/profile

Logging van het which-commando

Het which-commando schrijft zelf geen logbestanden weg.
Wil je gebruik van which monitoren, dan kan dat met auditd.

Voorbeeld auditd regel

sudo auditctl -w /usr/bin/which -p x -k which_monitor
  • -w /usr/bin/which โ†’ bewaak het bestand which
  • -p x โ†’ log bij uitvoeren
  • -k which_monitor โ†’ tag voor herkenning

Logs bekijken:

ausearch -k which_monitor

Of rechtstreeks in:

less /var/log/audit/audit.log

Updaten van which

Het which-commando kan geรผpdatet worden via de package manager van je distributie.

Voorbeeld (Debian/Ubuntu):

sudo apt update
sudo apt install --only-upgrade which

Verwijderen van which

Het which-commando kan verwijderd worden, maar dit kan het controleren van pad-locaties van commandoโ€™s bemoeilijken.

Voorbeeld (Debian/Ubuntu):

sudo apt remove which

๐Ÿ“– Handleiding

De ingebouwde handleiding van Linux-commandoโ€™s is altijd beschikbaar via man.
Voor which:

man which
Voorbeeld
WHICH(1)                     User Commands                     WHICH(1)

NAME
       which - locate a command

SYNOPSIS
       which [OPTION]... COMMAND...

DESCRIPTION
       Shows the full path of shell commands.