我是 Linux 新手,正在使用 Ubuntu 13.04。我有一个名为“dictionary”(完整路径:)的 C++ 程序/home/anmol/Desktop/c++/dictionary
,我用 Code::Blocks IDE(和 GCC 版本 4.7.3)编译了它。
我已经通过进入系统设置->键盘->快捷键并输入命令:为其设置了自定义键盘快捷键gnome-terminal --disable-factory -x /home/anmol/Desktop/c++/dictionary
。
现在我面临的问题是终端内的箭头键不起作用......例如,每当我按下左箭头键时,我都会得到“^[[D”......但是当我正常运行终端(通过按++ Ctrl)时,箭头键工作正常。AltT
现在,当我用 Google 搜索该问题时,我发现如果默认 shell 从 bash 更改为 sh,就会发生这种情况。
因此,在我的 c++ 程序中,为了查看默认 shell 是什么,我在函数system("chsh");
后面添加了一行main()
,结果发现默认 shell 仅为 bash!我仍然尝试添加该行,system("chsh -s /bin/bash")
但问题仍然存在...(当我将sudo
命令作为前缀时,它抛出了错误chsh: PAM:Authentication Failure
)!
另外,在 Code::Blocks 环境设置页面中,我发现了以下两个设置:
- Shell 中运行命令:
/bin/sh -c
- 终端启动控制台程序:
gnome-terminal --disable-factory -t $TITLE -x
我更改了“运行命令的 Shell”:。/bin/bash -c
但问题仍然存在。
答案1
首先安装rlwrap
工具(Ubuntu 中默认未安装),运行以下命令终端:
sudo apt-get install rlwrap
现在使用下一个命令设置您的自定义键盘快捷键:
gnome-terminal --disable-factory -x bash -c 'rlwrap -a /home/anmol/Desktop/c++/dictionary'