我的整个 rc.local 文件
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
cd ~/xcape && ./xcape -e 'Control_L=Escape'
exit 0
这是为了使我的 Caps Lock 键(设置为左控制键)在单独按下时变为退出键,并在按住时变为 ctrl 键。
当我在终端上执行 rc.local 文件中的命令时,它运行良好,但是当我启动计算机时,我必须手动运行该命令,因为 rc.local 文件没有运行该命令......或者它失败了。
答案1
避免在脚本中使用 ~,请使用完整目录路径。不仅正在运行另一个不理解 ~ 约定的脚本解释器(dash 而不是 bash),而且该脚本以 root 身份运行,因此即使理解了 ~,它也将是错误的主目录。
答案2
在启动期间运行时rc.local
,它运行为根且环境受到限制。
您应该~/xcape
用 来改变/home/yourUser/xcape
。
为了验证您的/etc/rc.local
脚本,您应该使用以下命令:
sudo service rc.local start