Was passiert, wenn du eine Datei innerhalb eines Programms unter Linux erstellst, die lediglich "test.txt" heißt? Meines Wissens wird sie im Home-Verzeichnis abgelegt, nicht im lokalen Verzeichnis der Applikation, es sei denn, du bist explizit im entsprechenden Verzeichnis (was du im Terminal über cd erreichst). Startet man aber ein Programm über den Linux-Desktop war dies zumindest früher eben nicht der Fall, ergo dein aktuelles Verzeichnis war aus Sicht des Programms immer HOME. Ebenso verhielt es sich mit Laden von Dateien.
Das hängt damit zusammen wie dein Programm damit umgeht. Das Programm könnte die Datei auch genau so gut im Verzeichnis des Programms selbst ablegen. Da ist das Verhalten gleich zu dem unter Windows. Ein großer Unterschied ist das / das Rootverzeichnis unter Linux ist. Unabhängig davon dass Windows eigentlich \ als Trennzeichen in Pfaden benutzt kannst du unter Windows einen relativen Pfad mit so einem Trennzeichen beginnen. Unter Linux geht das eben nicht da du dann auf das Rootverzeichnis referenzierst. Unter Linux könntest du wenn du möchtest einen . vor das Trennzeichen setzen um explizit auf das aktuelle Verzeichnis zu verweisen. Möchtest du beispielsweise auf die Datei data.txt im Unterverzeichnis data/txt_files zugreifen könntest du unter Windows folgende relative Pfade angeben:
data\txt_files\data.txt
\data\txt_files\data.txt
und unter Linux hättest du folgende Möglichkeiten:
data/txt_files/data.txt
./data/txt_files/data.txt
aber nicht:
/data/txt_files/data.txt
da es sich hier um einen absoluten Pfade handeln würde, vergleichbar zu sowas wie C:\data\txt_files\data.txt
An sich gibt es da unter Linux keine Probleme mit relativen Pfaden.