命令未在 rc.local 中运行但在终端中有效

命令未在 rc.local 中运行但在终端中有效

我的整个 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

相关内容