如何在应用程序开始运行之前强制执行命令

如何在应用程序开始运行之前强制执行命令

我想在通过 GUI 或 CLI 打开任何应用程序(例如 firefox/ deluge/ VLC)之前通过 bash 脚本执行某些操作。该脚本应仅针对某些应用程序执行,而不是针对所有应用程序执行。如何实现?

答案1

利用按应用程序的顺序搜索路径这一事实。

roadmr@blackdog:~$ which firefox
/usr/bin/firefox
roadmr@blackdog:~$ echo $PATH
/home/roadmr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

因此,当您尝试运行“firefox”时,它将在这些目录中进行搜索,最终找到/usr/bin并执行。

但是,如果您放置一个名为 的包装器firefox/usr/local/bin它会执行您需要的预运行操作并最终调用/usr/bin/firefox(此处为绝对路径,否则您将陷入循环),那么只要有人运行“firefox”,就会使用此包装器(请注意,.Desktop启动器还指定了“firefox”,这是一个仍将在 中搜索的相对名称PATH)。这是因为它在路径搜索顺序中/usr/local/bin/firefox位于前面。/usr/bin/firefox

相关内容