Readline应用程序名称

时间:2014-11-28 03:37:06

标签: bash readline

Readline手册描述了可用的条件结构here。特别是,手册说

  

应用程序构造用于包括特定于应用程序的设置。每个使用Readline库的程序都会设置应用程序名称,您可以测试特定值。这可用于将键序列绑定到对特定程序有用的函数。例如,以下命令添加一个引用Bash中当前或上一个单词的键序列:

     

$if Bash

     

# Quote the current or previous word "\C-xq": "\eb\"\ef\""

     

$endif

鉴于使用readline库的应用程序,如何找到它为"应用程序名称"设置的值?

1 个答案:

答案 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"