Categories
Internet, Unix en security

XDG gebruiken in scripts

Vroeger had je voldoende aan de variabele $HOME en moest je gokken naar sommige directories. Gelukkig is er met de komst van de XDG-specificatie daar verandering in gekomen. Er zijn een paar directories met een vaste locatie zoals $HOME/.config en $HOME/.cache, maar andere zijn dynamisch op basis van taalgebied.

En hier komt ook een moeilijkheid voor developers, want wat is nu de juiste directory voor het bureaublad. Is dat $HOME/Desktop of $HOME/Bureablad? Je kan proberen en hopen dat het goed gaat, maar dan zal je dat voor alle landen en talen op deze wereld moeten doen. Dit is gelukkig een onbegonnen zaak en hiervoor voorziet de XDG-specificatie.

In een shellscript kunnen variabele worden gezet door de volgende code op te nemen en dan gebruik maken de gedefinieerde variabelen zoals XDG_DESKTOP_DIR of XDG_DOWNLOAD_DIR.

if [ -f $HOME/.config/user-dirs.dirs ]
then
. $HOME/.config/user-dirs.dirs
fi

Een tweede optie is door gebruik te maken van een commando welke de juiste locatie teruggeeft.

$ xdg-user-dir DESKTOP
/home/username/Bureaublad
$ xdg-user-dir DOWNLOAD
/home/username/Download
$

Er zijn voor verschillende omgevingen ook voorzieningen getroffen waardoor het transparanter gaat worden en hopelijk wordt dit ook zo voor de gebruikers. Dit is wel een belangrijke stap die bij GNOME 2.22 en 2.24 is genomen om het platform transparanter voor andere developers te maken. Hopelijk volgen andere zoals KDE en GNOME nu ook al doen.

By Hans Spaans

Unix & security consultant with a passion for Linux, Solaris, PostgreSQL, Perl and network services, but also a strong believer in open and free source, standards and content.