📌  相关文章
📜  每次连接 usb ubuntu 时禁用打开文件资源管理器 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:40:40.123000             🧑  作者: Mango

每次连接 USB Ubuntu 时禁用打开文件资源管理器 - Shell/Bash

该需求的实现思路是通过使用 udev 规则在系统检测到连接 USB 设备时运行一个 Shell/Bash 脚本,来实现禁止打开文件资源管理器的功能。

1. 编写 Shell/Bash 脚本

在任意位置创建一个 Shell/Bash 脚本文件,比如命名为 disable_file_manager.sh,并添加以下内容:

#!/bin/bash
export DISPLAY=:0.0
if [ -z "${DESKTOP_SESSION+x}" ] || [ "$DESKTOP_SESSION" != "ubuntu" ]; then
  exit
fi
killall nautilus
exit 0

该脚本的作用是检测当前桌面环境是否为 Ubuntu,如果不是则直接退出脚本;如果是,则关闭文件资源管理器(Nautilus)进程。 注意脚本中的 DISPLAY 环境变量需要设置为 :0.0,因为当 USB 设备连接时,系统会切换到一个虚拟终端 (TTY) 并不会使用 GUI 环境中的 DISPLAY 环境变量。

2. 创建 udev 规则

在终端中打开一个新的文件 disable_file_manager.rules,并添加以下内容:

ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", RUN+="/bin/bash /path/to/disable_file_manager.sh"

其中,/path/to/disable_file_manager.sh 为上一步中脚本文件保存的路径。

然后将该文件复制到 /lib/udev/rules.d/ 目录下,并赋予其正确的权限:

sudo cp disable_file_manager.rules /lib/udev/rules.d/
sudo chmod 644 /lib/udev/rules.d/disable_file_manager.rules

最后执行以下命令更新 udev 规则并重启 udev 服务:

sudo udevadm control --reload-rules
sudo service udev restart

现在每次连接 USB 设备时,都会自动运行 Shell/Bash 脚本并禁止打开文件资源管理器。