Readline手册描述了可用的条件结构here。特别是,手册说
应用程序构造用于包括特定于应用程序的设置。每个使用Readline库的程序都会设置应用程序名称,您可以测试特定值。这可用于将键序列绑定到对特定程序有用的函数。例如,以下命令添加一个引用Bash中当前或上一个单词的键序列:
$if Bash
# Quote the current or previous word "\C-xq": "\eb\"\ef\""
$endif
鉴于使用readline库的应用程序,如何找到它为"应用程序名称"设置的值?
答案 0 :(得分:4)
理想的解决方案是阅读应用程序的文档,这无疑会在readline
部分中告诉您。 (是的,这是个玩笑。)
这是一种可行的技术:
带有调试符号的应用程序的记录:
$ gdb the_application
...
Reading symbols from /usr/local/bin/the_application...done.
(gdb) b rl_initialize
Breakpoint 1 at 0x496180: file readline.c, line 1050.
(gdb) r
Starting program: /usr/local/bin/the_application
Breakpoint 1, rl_initialize () at readline.c:1050
1050 {
(gdb) p rl_readline_name
$1 = 0x4d1fbb "TheApplication"
带有没有调试符号的应用程序的更可能的脚本:
$ gdb the_application
...
Reading symbols from /bin/bash...(no debugging symbols found)...done.
(gdb) break rl_initialize
Breakpoint 1 at 0x48df40
(gdb) r
Starting program: /usr/bin/local/the_application
Breakpoint 1, 0x000000000048df40 in rl_initialize ()
(gdb) p (char*)rl_readline_name
$1 = 0x4b0bcb "TheApplication"