Warum wird dieser Dateiname in Nautilus abgeschnitten?
In Ubuntu ist normalerweise die "Erweiterung" eines Dateinamens, dh der Teil nach dem Punkt (.), Sichtbar. Warum zeigt Nautilus nicht die Erweiterung an, eclipse.desktop
wenn der ls
Befehl deutlich anzeigt, dass es sich um den vollständigen Dateinamen handelt?
Das ist das list view
; nicht die icon view
.
Antworten
Über .desktop-Dateien und ihre spezielle Funktion
.desktop
Dateien sind spezielle Dateien. Sie repräsentieren Anwendungen in der GUI, entweder auf Ihrem Desktop oder in Dash / Unity. Zu diesem Zweck wird ein GUI- Name der Anwendung in einer Zeile innerhalb der Datei in der Zeile festgelegt
Name=Eclipse
Sie können einfach den Namen , wie die Anwendung zeigt in Dash und Unity ändern, indem Sie diese Zeile innerhalb der sich ändernden .desktop
Datei, ohne das Ändern Dateiname der .desktop
Datei. In diesem Fall ist es unerheblich, ob die Datei ausführbar ist oder nicht.
Wenn sich die .desktop
Datei jedoch auf Ihrem Desktop befindet und nicht ausführbar ist, funktioniert sie aus den in der Antwort von souravac erläuterten Gründen nicht als Starter und wird unter ihrem eigenen (Datei-) Namen "angezeigt":
eclipse.desktop
Wenn es ist ausführbar und auf Ihrem Desktop, funktioniert es als Trägerrakete und so ist es eine Anwendung darstellt. Dann wird der Name der Anwendung angezeigt, wie in der Zeile festgelegtName=
Sprachspezifischer Name
Wenn die .desktop
Datei die Zeile hat:
X-Ubuntu-Gettext-Domain
Die Datei zeigt sogar einen sprachspezifischen Namen an, der aus einer Sprachdatei abgerufen wurde und dann in Dash und Unity angezeigt wird.
unten ein kompliziertes Beispiel: Dateiname = inkskape.desktop, "grundlegender" Schnittstellenname = Inkskape, übersetzter Name = Inkskape Vector Graphics Editor
Der Befehl ls
Der ls
Befehl ist rein klibasiert und zeigt immer den Dateinamen an.
Zitat aus Ubuntus Sicherheitsrichtlinie :
Ausführungsberechtigungsbit erforderlich
Anwendungen, einschließlich Desktops und Shells, dürfen keinen ausführbaren Code aus Dateien ausführen, wenn beide:
- Fehlen des ausführbaren Bits
- befindet sich im Home-Verzeichnis oder im temporären Verzeichnis eines Benutzers.
Dies umfasst * .desktop-, * .jar- und * .exe-Dateien.
Was ist eine gültige .desktop
Datei im Home-Verzeichnis des Benutzers?
Gemäß der Sicherheitsrichtlinie von Ubuntu ist die Ausführungsberechtigung in .desktops
Dateien und Shells-Skripten ein Muss, um ausführbaren Code aus diesen Dateien auszuführen, wenn sie sich im Home-Verzeichnis eines Benutzers befinden.
Nautilus betrachtet eine .desktop
Datei nicht als gültige Anwendungsverknüpfungen, es sei denn, sie verfügt über ein ausführbares Bit, wenn sie sich im Home-Verzeichnis eines Benutzers befinden.
Andererseits ist es im Quellcode von nautilus fest codiert, dass .desktop
der Name einer gültigen Datei aus dem Feld Name=
oder Name[$LANG]
in der .desktop
Datei angezeigt wird, wobei der Dateiname und die Erweiterung ignoriert werden. Dies gilt nicht für .sh
oder .jar
Dateien in Nautilus.
Beispiel: Bei einer neuen Ubuntu-Installation erhält jeder Benutzer sein Ausgangsverzeichnis examples.desktop
. Der Dateiname lautet examples.desktop
. Aber im Nautilus kann man es so sehen Examples
. Wenn Sie in die .desktop
Datei schauen, sehen Sie Folgendes (ich zeige nur einen Teil davon):
Name = Beispiele Name [aa] = Ceelallo .. Name [en_AU] = Beispiele Name [en_CA] = Beispiele Name [en_GB] = Beispiele ..
Sie können die Berechtigung (try ls -la /path/to/filename.extension
) von Eclipse.desktop
und überprüfen smartgit.desktop
. Ersteres hat ein ausführbares Bit gesetzt, letzteres nicht.
Aus diesem Grund erkennt nautilus Eclipse.desktop
als Anwendungsverknüpfungen und zeigt seine Erweiterung nicht an.
Wenn eine .desktop
Datei ausführbar ist, erkennt Nautilus sie als Desktop-Verknüpfung und zeigt nicht den Namen der Datei an, sondern die Zeichenfolge, die als Wert der Name=
Eigenschaft in der Datei festgelegt wurde.
Unter diesem Link schreibt der Autor "fragos":
Wenn Sie diesen Ordner in nautilus öffnen, werden die .desktop-Dateien leider mit dem in der Datei angegebenen Symbol und dem in der Datei angegebenen Dateinamen angezeigt.
Wenn er "Dateiname genannt innerhalb" sagt, bedeutet dies, dass der angezeigte Dateiname von innen übernommen wird. Ich würde sagen "Dateiname, der innerhalb gesetzt wird, wenn das ausführbare Bit gesetzt ist". Er kann recht haben, dass dies unglücklich ist. Seltsamerweise habe ich einige, bei denen das Ausführungsbit gesetzt ist, und einige, bei denen dies nicht der Fall ist. Diejenigen, bei denen das Ausführungsbit NICHT gesetzt ist, sind keine Ursache für Unglück, aber ich weiß nicht, warum ich Glück hatte. Wenn das Bit gesetzt ist, kann es vielleicht als eine Eigenart oder ein Fehler angesehen werden.