脚本在重启时不起作用

脚本在重启时不起作用

在本主题中暂时禁用触摸屏我问如何禁用我的 HP 触摸屏。通过反复试验,并使用命令

xinput --list

我能够识别哪个设备是触摸屏,然后输入

xinput disable id

作为设备的实际号码,我可以禁用触摸屏。

问题是每次打开电脑时我都必须这样做。此外,根据我是否使用鼠标打开电脑,触摸屏会更改其 ID。

我想编写一个脚本,每次打开笔记本电脑时自动禁用触摸屏,所以我需要考虑到这一点。在脚本中我写了

cd /home/user/Desktop/touchscreen_ids

xinput --list | grep "ELAN" | grep "slave  pointer" > id.txt

(第一个命令进入该特定文件夹,第二个命令将以下文本写入 txt 文件中

⎜   ↳ ELAN2514:00 04F3:2AF4                     id=9    [slave  pointer  (2)]

)然后,仍然在同一个脚本中,我写了

sed -i 's/id=/\nid=/g' id.txt

sed -i 's/\[/\n\[/g' id.txt

cat id.txt | grep "id=" > iso_id.txt

sed -i 's/id=//g' iso_id.txt

touchscreen_id=$(cat iso_id.txt)

xinput disable $touchscreen_id

当我运行脚本时,它工作得很好。但是,使用 cron tab @reboot 选项,当我打开电脑时,它会创建 txt 文件,但它们是空的,并且触摸屏已启用。

你们知道这里发生了什么吗?我对 Linux 或命令行不是很熟悉,所以请尽量保持简单。

先感谢您!

答案1

cron 作业的环境不是您自己的,因此请使用 bash 提供的机制之一来运行您的脚本。摘自 bash 手册页:

executes /etc/profile, if that file exists.  After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile,

从 .bash_login (或其他)运行你的脚本。.profile 是传统的地方,它可以与一些非 bash shell 一起工作。

相关内容