Wieso sschuste noch /usr/bin/ davor hat erschließt sich mir jetzt nicht.
Weil's ordentlicher ist. Das Programm gatttool liegt im Verzeichnis /usr/bin. Eigentlich reicht es, einfach nur gatttool aufzurufen, denn das Verzeichnis /usr/bin ist Teil des Suchpfades, in dem die Shell nach Programmen sucht. Den Suchpfad kann man sich anzeigen lassen mit echo $PATH. Im Suchpfad stehen oft viele Verzeichnisse, die in der Reihenfolge abgesucht werden, wie sie gelistet sind, und dabei wird dann der erste Treffer genommen.
So ein Pfad kann so aussehen:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Die einzelnen Verzeichnisse sind durch Doppelpunkte getrennt. Bei Eingabe eines Kommandos wie gatttool sucht die Shell erst in /usr/local/sbin, dann in /usr/local/bin, dann in /usr/sbin, dann in /usr/bin, danach in /sbin und letztendlich in /bin. Das Programm wird dabei in /usr/bin gefunden, gestartet und der Suchlauf an dieser Stelle abgebrochen.
Hätte man das Programm zweimal auf dem Rechner, beispielsweise in /usr/bin und in /usr/local/bin, dann würde es aus dem Verzeichnis /usr/local/bin gestartet, weil dieses im Pfad vor /usr/bin liegt. Zweimal will man ein Programm eigentlich nicht auf dem Rechner haben, aber das kann immer wieder mal passieren, ohne dass man es merkt.
In Konfigurationen oder in cron-Jobs gebe ich den gesamten Pfad zum Programm an, hier also /usr/bin/gatttool, damit ich sicher sein kann, dass genau dieses gestartet wird und nicht irgendein anderes gatttool, das versehentlich irgendwo herumgammelt. Das ist eigentlich der einzige Grund.
Um herauszufinden, wo ein Programm im Suchpfad gespeichert ist, verwendet man den Befehl which Programmname, hier also
which gatttool.
Stefan