我尝试了这个问题的代码,但由于某种原因它们不起作用,为什么以及如何修复它们?
a@ubuntu:~$ echo "#!/bin/sh" > ~/bin/run_linx_program
bash: !/bin/sh": event not found
a@ubuntu:~$ echo "$1 "\`wine winepath -u \"$2\"\`\"" >> ~/bin/run_linx_program
> ?
> ^C
a@ubuntu:~$
我尝试了这个问题的代码,但由于某种原因它们不起作用,为什么以及如何修复它们?
a@ubuntu:~$ echo "#!/bin/sh" > ~/bin/run_linx_program
bash: !/bin/sh": event not found
a@ubuntu:~$ echo "$1 "\`wine winepath -u \"$2\"\`\"" >> ~/bin/run_linx_program
> ?
> ^C
a@ubuntu:~$
我已经修复了原始答案(这次我已经对其进行了测试):
我忘了!在 s内部被解释
"
。我应该使用'
s。!
开始历史替换比赛,这不是我想要的。!在 bash 中有特殊的含义:
有两种方法可以防止历史扩展,或者
!
使用反斜杠转义,或者使用单引号:在复杂的结构中,尽量避免使用
"
(双引号)字符并使用单个字符('
):我已将反引号替换为
$(
and)
以使线条更清晰。这是一种迂回的做事方式。第一个喜欢创建一个文件并将
#!/bin/sh
其写入,第二个喜欢将其他内容附加到文件中。让这个工作
在您的主目录中创建
bin
目录,在 Nautilus 中或通过键入创建一个新文件
~/bin/run_linx_program
(其中~
是“您的主目录”的简写)并将这些行放入其中:您可以通过执行创建文件
nano ~/bin/run_linx_program
,也可以使用文本编辑器。运行
chmod a+x ~/bin/run_linux_program
以使文件可执行,或者您可以右键单击文件,打开属性,转到权限并设置“可执行”。除非您实际使用或需要历史扩展,否则我建议您通过添加行将其关闭
在你的
~/.bashrc
. 我已经做到了,并且很高兴再也不会被event not found
消息打扰。无论如何,历史扩展仅对交互式 shell 启用,因此不会影响脚本。