メインコンテンツへスキップ
  1. ノート/
  2. Linux/

シンボリックリンクと .desktop アイコン

·4079 文字·9 分· loading · loading · · ·
ICE345
著者
ICE345
CS Student | System | Linux | OCaml
この記事は中国語版をもとにした日本語版メモです。コマンド、コード、数式、画像リンクは原文の意味を壊さないように保持し、説明文と見出しを日本語向けに整理しています。

两者区别
#

作成桌面图标和作成软连接的方式有不同的用途和应用场景,以下是它们的主要区别:

1. 软连接(符号链接)
#

  • 作用:软连接(ln -s コマンド)本质上是ファイルシステム中的快捷方式,它为ファイル或ディレクトリ作成一个指向目标ファイル的链接。通过软连接,用户できます使用不同的パス来访问同一个ファイル或ディレクトリ。
  • 应用场景
    • 用于コマンド行中简化对某个ファイル或可执行程序的パス访问。たとえば,你できます通过软连接将 /opt/myapp/myapp_executable 映射到 /usr/local/bin/myapp,使得你できます通过コマンド myapp 来実行程序,而不必要输入完整パス。
    • 主要用于コマンド行和ファイルシステム级别的操作,无法直接作成带图形界面或图标的可视化快捷方式。
  • 特点
    • 无图形界面,纯粹是ファイルシステム中的一个链接。
    • 用于コマンド行或脚本的便捷操作。
    • 只适用于终端或脚本中调用程序,而不涉及桌面图标、应用菜单等图形界面元素。

2. 桌面图标(.desktop ファイル)
#

  • 作用.desktop ファイル是一种定义应用程序启动方式的ファイル,通常用于 Linux 桌面环境。它不仅できます指向一个可执行ファイル,还できます包含应用的图标、名称、描述等信息。通过它,用户できます在桌面或应用菜单中图形化地启动应用程序。
  • 应用场景
    • 用于在桌面环境下为应用程序作成图标或快捷方式,たとえば将应用程序显示在 Ubuntu 的应用菜单、启动器、桌面等地方。
    • 允许通过图形界面启动程序,而不是通过コマンド行。
    • .desktop ファイルできます定义更多的行为,如是否在终端実行、传递特定参数、设置图标等。
  • 特点
    • 主要用于图形化的桌面环境,允许用户通过鼠标点击图标来启动应用程序。
    • できます设置图标、名称、描述、类别等信息,用户体验更友好。
    • できます設定应用程序是否実行在终端、是否使用特定的图标等。

主要区别まとめ
#

特性软连接桌面图标(.desktop ファイル)
作用作成ファイル或ディレクトリ的快捷方式,用于简化コマンド行操作为应用程序作成桌面快捷方式,允许在图形界面中启动应用
应用场景ファイルシステム、コマンド行中的快捷方式桌面环境、应用菜单中的图标,图形化启动应用程序
使用方式通过终端コマンド执行通过点击桌面图标或应用菜单启动
图标支持无图标支持,只是ファイルパス的指向支持图标显示,できます自定义图标、描述、应用类别等
是否必要图形界面不必要,完全依赖于コマンド行或ファイルシステム的パス操作必要图形界面环境,用于桌面或应用菜单中的应用程序快捷方式
可执行ファイル的設定选项只能指向ファイル或ディレクトリ,没有其他設定选项できます設定是否使用终端、参数传递、应用程序分类、图标等

何时使用软连接?
#

  • 当你主要通过コマンド行使用应用程序时,软连接是一个方便的方式。它できます让你在终端中使用简短コマンド,而无需输入完整パス。

何时使用桌面图标(.desktop ファイル)?
#

  • 当你希望在桌面、应用菜单或启动器中图形化启动应用程序时,应该使用 .desktop ファイル。它适用于日常用户必要通过点击图标的方式启动应用程序的场景。

两者できます结合使用,比如为コマンド行用户作成软链接,同时为图形化用户提供 .desktop ファイル,这样既方便终端操作,也方便图形界面使用。


#

当然,以下是分别使用软连接和 .desktop ファイル的例,以帮助你更清楚地理解两者的区别和用途。

1. 软连接的例
#

场景:假设你インストール了一个应用程序 myapp,它的可执行ファイル位于 /opt/myapp/myapp_executable。你希望在终端中直接使用 myapp コマンド来启动この程序,而不必要输入完整パス。

手順:
#

  1. 查找可执行ファイル的パス(假设它在 /opt/myapp/myapp_executable)。
  2. 作成软连接,将其链接到 /usr/local/bin/,方便在终端中使用:
sudo ln -s /opt/myapp/myapp_executable /usr/local/bin/myapp

结果:
#

  • 你现在できます直接在终端中通过输入 myapp 来启动この应用程序,而不必要输入完整パス /opt/myapp/myapp_executable
  • 软连接つまりファイルシステム中的一个快捷方式,できます通过コマンド行快速访问应用程序。

验证:
#

できます実行以下コマンド確認软链接是否作成成功:

ls -l /usr/local/bin/myapp

你会看到输出类似于:

lrwxrwxrwx 1 root root 24 Sep 14 10:00 /usr/local/bin/myapp -> /opt/myapp/myapp_executable

这意味着 /usr/local/bin/myapp 现在指向 /opt/myapp/myapp_executable

2. 作成桌面图标的例
#

场景:你希望为 myapp 作成一个图标,显示在桌面或应用菜单中,方便通过点击启动程序。同时,你希望この图标有一个合适的名称和图标ファイル。

手順:
#

  1. まず,找到应用程序的可执行ファイル(たとえば /opt/myapp/myapp_executable)和图标ファイル(たとえば /opt/myapp/myapp_icon.png)。
  2. 作成 .desktop ファイル。你できます使用文本编辑器作成一个新的 .desktop ファイル:
gedit ~/.local/share/applications/myapp.desktop
  1. .desktop ファイル中追加以下内容:
[Desktop Entry]
Version=1.0
Name=MyApp
Comment=This is my custom application
Exec=/opt/myapp/myapp_executable   # 应用程序的实际路径
Icon=/opt/myapp/myapp_icon.png      # 图标文件路径
Terminal=false                     # 不需要在终端中运行
Type=Application
Categories=Utility;                # 类别,可根据需要选择
  1. 保存并关闭ファイル。

  2. 赋予 .desktop ファイル执行权限:

chmod +x ~/.local/share/applications/myapp.desktop

结果:
#

  • 你现在できます在 Ubuntu 的应用菜单中搜索 MyApp,并通过图标启动它。
  • もし你希望将图标显示在桌面上,还できます将 .desktop ファイル复制到桌面:
cp ~/.local/share/applications/myapp.desktop ~/Desktop/

验证:
#

  • 在应用菜单中搜索 MyApp
  • 双击桌面上的图标,应用程序将启动。

对比まとめ:
#

特性软连接例桌面图标例
目的在コマンド行中方便実行应用程序在桌面或应用菜单中方便启动应用程序
操作システム级别ファイルシステム(终端和パス操作)桌面环境(图形用户界面)
作成コマンドsudo ln -s /opt/myapp/myapp_executable /usr/local/bin/myapp编辑并作成 .desktop ファイル,赋予执行权限
启动方式在终端中输入 myapp点击桌面或应用菜单中的图标
是否支持图标不支持图标,仅支持コマンド行使用支持图标,できます在桌面、应用菜单中显示自定义图标
适合的用户终端用户、开发者、必要频繁通过コマンド行启动程序的用户图形界面用户、希望通过点击图标方便启动应用的普通用户

这两个方法できます结合使用,たとえば:

  • 为终端用户作成一个软链接,方便通过コマンド行快速启动程序。
  • 为桌面用户作成一个 .desktop ファイル,提供友好的图形化启动方式。

説明
#

在 Ubuntu 及其他类 Unix システム中,通常将软链接(符号链接)放到 /usr/local/bin ディレクトリ有几个重要原因。この做法涉及到ファイルシステム的组织、環境変数和可执行ファイル的查找机制。

1. /usr/local/bin 是用户ローカルインストール软件的标准ディレクトリ
#

/usr/local/bin 是 Linux システム中一个专门用来存放用户自己インストール的软件或脚本的ディレクトリ,而不是操作システム包管理器(如 apt)管理的软件。其主要目的包括:

  • 分离システム软件和用户自定义软件:システム自带的核心程序通常位于 /bin/usr/bin 等ディレクトリ,而 /usr/local/bin 是为ローカル用户インストール的软件或脚本准备的,不会被システム包管理器覆盖或削除。
  • 避免システム升级影响:もし用户将自己的程序放在 /usr/bin/bin,在システム升级时可能会被システムファイル覆盖。而 /usr/local/bin 被保留用于ローカル用户操作,システム升级不会动このディレクトリ里的ファイル。

2. /usr/local/bin 在システム的 PATH 環境変数中
#

PATH 是 Linux システム中的一个環境変数,存放着システム在终端中查找可执行ファイル的ディレクトリ。当你在终端中输入コマンド时,システム会从 PATH 列出的ディレクトリ中按顺序查找该コマンド对应的可执行ファイル。もし你将软链接放到 PATH 中的某个ディレクトリ(如 /usr/local/bin),用户できます直接在终端中実行该程序,而无需输入完整パス。

できます通过以下コマンド確認 PATH 变量的内容:

echo $PATH

通常 PATH 中包含 /usr/local/bin,そのため将应用程序或其软链接放到このディレクトリ中后,システム能够自动找到它。

たとえば,$PATH 通常可能包含类似以下パス:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

もし将软链接放在 /usr/local/bin,就无需输入绝对パス,できます直接通过コマンド名実行程序。

3. 方便コマンド行调用
#

将软链接放在 /usr/local/bin 中后,用户できます直接在终端中输入程序名称,而不必输入程序的完整パス。たとえば,もし你的程序可执行ファイル位于 /opt/myapp/myapp_executable,而你作成了一个软链接到 /usr/local/bin/myapp,则只需输入 myapp 即可実行该程序,而不必要每次都输入 /opt/myapp/myapp_executable

4. 遵循ファイルシステム层次标准(FHS)
#

Linux システム通常遵循 ファイルシステム层次标准(FHS, Filesystem Hierarchy Standard)。根据 FHS 规范:

  • /bin/usr/bin:用于存放操作システム自带的程序和包管理器インストール的软件。システム的核心ツール和程序都放在这些ディレクトリ中。
  • /usr/local/bin:这是专门为用户インストール的程序、脚本或ツール准备的ディレクトリ,通常用于非操作システム提供的、用户自定义インストール的软件。它できます看作是 “ローカル”(local)空间,供管理员或用户自行管理。

そのため,遵循这种标准,できます帮助管理员和开发者更好地组织システム中的应用程序,确保システム升级和维护的安全性与一致性。

5. 权限管理
#

通常,システムディレクトリ(如 /bin/usr/bin)是只读的,只有超级用户(root)できます对其进行写操作。相反,/usr/local/bin 通常为システム管理员和某些用户提供写权限,便于用户インストール自定义程序和脚本,而不会影响システム的核心ファイル。

まとめ:
#

  • 将软链接放在 /usr/local/bin 是一种惯例和最佳实践,なぜなら该ディレクトリ是专门为用户インストール的ローカル程序保留的,它在 PATH 变量中,确保了你できます在终端中方便地访问和実行程序。
  • 这样做できます保持システム的整洁和安全,避免ローカルインストール的软件与操作システム自带的核心软件发生冲突。

通过这种方式,用户できます在不破坏システム核心ファイル的情况下,自由インストール和使用自己的软件。