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.
- Een symbolic link verwijst naar een bestandsnaam en deze bestandsnaam verwijst naar de “inode” (plaats op het bestandssysteem waar de data zich effectief bevindt). Als je de bestandsnaam veranderd zal een symlink niet meer werken omdat de bestandsnaam waar het naartoe verwijst weg is.
- Een hard link daarentegen verwijst niet naar de bestandsnaam maar rechtstreeks naar de “inode“, hierdoor zal het niet uitmaken of je het bestand nu van naam veranderd (of zelfs wist) de hardlink zal blijven werken. Toch worden Symlinks meer gebruikt dan hardlinks
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:
- 2 bestanden aangemaakt (symlink-doel en hardlink-doel).
- een symlink met naam symlink aangemaakt naar symlink-doel.
- een hardlink met naam hardlink aangemaakt naar hardlink-doel.
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