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
.
smartgit.desktop
ist keine Anwendungsverknüpfung. Was istsmartgit.desktop
?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. Dazu wird ein GUI- Name der Anwendung in einer Zeile innerhalb der Datei in der Zeile festgelegtSie 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 in der Antwort von acidavac erläuterten Gründen nicht als Launcher und wird unter ihrem eigenen (Datei-) Namen "angezeigt":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 festgelegt
Name=
Sprachspezifischer Name
Wenn die
.desktop
Datei die Zeile hat:Die Datei zeigt sogar einen sprachspezifischen Namen an, der aus einer Sprachdatei abgerufen wurde und dann in Dash und Unity angezeigt wird.
Unter einem komplizierten 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.quelle
Zitat aus Ubuntus Sicherheitsrichtlinie :
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 FeldName=
oderName[$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 lautetexamples.desktop
. Aber im Nautilus kann man es so sehenExamples
. Wenn Sie in die.desktop
Datei schauen, sehen Sie Folgendes (ich zeige nur einen Teil davon):Sie können die Berechtigung (try
ls -la /path/to/filename.extension
) vonEclipse.desktop
und überprüfensmartgit.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.quelle
myapp.desktop
und es hatName=Some Cool App
Linie. Wenn die Berechtigung für ausführbare Dateien festgelegt ist, kann nur dann der Dateiname als angezeigt werdenSome Cool App
. Natürlich muss die Datei auch das richtige Format haben und tatsächlich dieseName=
Zeile haben. Übrigens, siehe die bearbeitete Antwort von souravc, sie wurde aktualisiert.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 derName=
Eigenschaft in der Datei festgelegt wurde.quelle
ls
Befehl wurde geschrieben, bevor GUIs überhaupt "eine Sache" waren, und es gibt keinen Grund für ein Power-User-Programm, einen Dateityp in einer Umgebung, in der die fraglichen Dateien nicht einmal verwendet werden, völlig anders zu behandeln als alle anderen .Unter diesem Link schreibt der Autor "fragos":
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.
quelle
.desktop
ausführbare Datei festlegen oder nicht. Die meisten von ihnen nicht, wie Sie in sehen können/usr/share/applications
. Es gibt auch keinen Grund, sie dort ausführbar zu machen, und sie zeigen ihren Dateinamen in nautilus (nicht in Unity / Dash). Die Tatsache , dass sie können als direkten Launcher verwendet werden macht Sinn, und so , dass sie dann ihre GUI Namen zeigen, wenn ausführbar gemacht..desktop
Datei wie in Dash / Unity flexibel, häufig sogar sprachspezifisch. Kein Fehler, so ist es gestaltet./usr/share/applications
sind nicht als (direkte) Starter von der GUI gedacht, sondern dienen nur der (GUI-) Schnittstelle des Betriebssystems, wie in diesem Fall Unity und Dash. Es gibt keinen Grund für einen Entwickler, die Datei ausführbar zu machen, wenn sie dort oder in gespeichert ist~.local/share/applications
. Sie können es als Fehler bezeichnen, wenn Sie möchten, aber völlig harmlos, da es nicht direkt verwendet werden soll, es sei denn, es befindet sich z. B. auf Ihrem Desktop. Wenn eine .desktop-Datei als Vertreter Ihrer Anwendung verwendet wird, soll sie sich abhängig von Ihrer Sprache usw. wie ein Chamäleon verhalten.