Um zu verstehen, warum dieses überraschende Verhalten nicht vollständig schrecklich, betrachten Sie eine Anwendung, die den Namen einer Konfigurationsdatei als Argument akzeptiert:
config_root = "/etc/myapp.conf/"
file_name = os.path.join(config_root, sys.argv[1])
Wenn die Anwendung mit ausgeführt wird:
$ myapp foo.conf
Die Konfigurationsdatei /etc/myapp.conf/foo.conf
verwendet werden.
Aber was passiert, wenn die Anwendung mit aufgerufen wird?
$ myapp /some/path/bar.conf
Dann myapp
sollte verwenden Sie die Konfigurationsdatei unter /some/path/bar.conf
(und nicht /etc/myapp.conf/some/path/bar.conf
oder ähnlich).
Es mag nicht großartig sein, aber ich glaube, das ist die Motivation für das absolute Pfadverhalten.