SYMLINK

Symbolic Links

Niet echt een programma, maar wel een veel gebruikte functie van Linux zijn de zogenaamde Symbolic Links of Symlinks in het kort.

Maar wat zijn symlinks nu precies ?

Je kunt deze zien als een verwijzing naar een bestand op een andere locatie binnen het bestandssysteem. Een praktisch voorbeeld is een programma dat niet Distributie specifiek is (bijv. een programma dat niet wordt aangeboden in de pakketbeheerder van de distributie), volgens de standaard plaats je deze niet in /bin of /usr/bin maar in /opt (in opt krijg je dan bijv de directory /opt/Nextcloud met in de Nextcloud directory verschillende subdirectory's zoals /usr, /etc, /lib, etc.)

Maar omdat het systeem niet standaard kijkt in /opt (of enige subdirectory van /opt) zul je het programma niet kunnen opstarten zonder het volledige path te geven (bijv. /opt/Nextcloud/bin/NextCloud)

Hier komen symlinks goed van pas, want als je in /usr/bin een link aanmaakt die verwijst naar “/opt/Nextcloud/bin/NextCloud” kun je het programma wel opstarten zonder het “absolute path” te moeten opgeven.

Het programma om deze links te maken heet simpelweg ln (man ln).

En de syntaxis om zo”n link te maken is simpelweg: ln -s <doel> <naam-van-de-link> dus in mijn voorbeeld met NextCloud: # ln -s /opt/Nextcloud/bin/NextCloud /usr/bin/nextcloud

Denk er wel aan dat je root privileges moet hebben (afhankelijk van de plaats) om dit bestand aan te maken (dus moet je meestal sudo gebruiken).

ln heeft ook een “hardlink” optie i.p.v. een “symbolic link

om een hardlink (of Physical) te maken vervang je de -s optie met -P (hoofdletter) of je geeft helemaal geen optie mee.

Het verschil tussen beide is niet zo simpel uit te leggen (zonder in te gaan op dingen zoals inodes) maar simpel gezegd is het als volgt:

Hoe herken je nu een symbolic link in de terminal?

Als je een gekleurde terminal gebruikt zal een symlink in een bepaalde kleur worden weergegeven (afhankelijk van het kleurenschema dat jouw terminal gebruikt), maar als je $ ls -l (list) doet krijg je ook te zien naar welk bestand de symlink verwijst:

In bovenstaande afbeelding heb ik:

Zoals je kunt zien geeft ls -l aan dat symlink verwijst (->) naar symlink-doel (ook staat er helemaal vooraan l voor link i.p.v. d voor Directory of voor bestand.

Meer informatie kun je altijd terugvinden in de manpages of de infopages