【发布时间】:2014-06-02 20:40:39
【问题描述】:
这是我第一次在 stackoverflow 上发帖,希望不要违反任何规则。我是一个完整的 Linux 新手(昨晚安装了 Lubuntu 14.04 64 位),所以请注意。
简而言之,我正在尝试让我的笔记本电脑触摸板切换开关工作(我的 Inspiron5110 上的 Fn+F3)。我有一个 bash 脚本:
#!/bin/bash
if [ $(synclient -l | grep TouchpadOff | awk '{print $3}') == 1 ] ; then
synclient touchpadoff=0;
else
synclient touchpadoff=1;
fi
我是从http://crunchbang.org/forums/viewtopic.php?id=10996 那里得到的。如果我将脚本代码粘贴到终端并执行它,它就可以工作(触摸板打开/关闭)。但是,我想将它绑定到一个键,所以在我的 lubuntu-rc.xml 我添加了以下内容:
<!-- disable touchpad -->
<keybind key="XF86TouchpadToggle">
<action name="Execute">
<command>/usr/local/bin/touchpad.sh</command>
</action>
</keybind>
当我按下必要的组合键时,我得到了"Failure to execute child process "/usr/local/bin/touchpad.sh" (No such file or directory)"。但是我可以在这个目录中看到,无论是在文件管理器中,还是在终端中使用 ls 时,文件都在那里:
/usr/local/bin$ ls -l
total 4
-rwxrwxr-x 1 paspaldzhiev paspaldzhiev 145 юни 2 22:54 touchpad.sh
我使用chmod +x touchpad.sh 使其可执行。
现在,这变得更加令人困惑:
如果我使用bash /usr/local/bin/touchpad.sh,我会得到:
paspaldzhiev@areuexperienced:/usr/local/bin$ bash touchpad.sh
touchpad.sh: line 6: syntax error near unexpected token `fi'
touchpad.sh: line 6: `fi'
虽然我在上面说过,但我知道代码只要粘贴到终端就可以工作。
此外,如果我使用./touchpad.sh,我会得到:
paspaldzhiev@areuexperienced:/usr/local/bin$ ./touchpad.sh
bash: ./touchpad.sh: /bin/bash^M: bad interpreter: No such file or directory
请注意,我不太确定bash touchpad.sh 和./touchpad.sh 在执行方面有什么区别,只是我的更多精通Linux 的朋友告诉我尝试这些:D。
无论如何,我不知道以后该怎么做,谁能解释一下我做错了什么?
非常感谢!
【问题讨论】:
-
以下内容看起来很奇怪:
/bin/bash^M: bad interpreter: No such file or directory。确保该行上没有任何奇怪的转义字符。 /bin/bash 二进制文件没有 ^M 后缀 -
上一个错误消息中的 ^M 是您的重要提示; -)。不知何故,您使用了 Windows 编辑器、文件传输或其他东西。试试
dos2unix touchpad.sh。它将从行尾删除所有 CR (^M) 字符。它应该工作。祝你好运。 -
成功了!我真的不记得了,但我在 Lubuntu 上都使用了 Leafpad 或 SublimeText3。总之,问题解决了,谢谢!!!为了避免再次出现这个问题,您建议我使用什么来编写 .sh 文件?
-
大多数编辑器都有 'Unix' 文件模式。环顾四周。标准的 Unix 编辑器是“vi”,但它有一个陡峭的学习曲线,所以除非你对 Unix 脚本/编程做出真正的承诺,否则坚持你所知道的并学习你已经知道的工具中可用的选项。祝你好运。
标签: linux bash shell ubuntu key-bindings