【发布时间】:2013-06-28 08:26:03
【问题描述】:
我正在尝试查找当前 shell 拥有的所有别名(在 C 程序中)。我试过system("alias")、popen("alias", "r") 和execvp("alias", ...),后者根本不起作用(因为alias 是特定于shell 的命令),其中前两个在subshell(这是sh 而不是bash)-> 在那里,别名被禁用,因为它们是在我的~/.bashrc 中定义的。执行bash 并读取alias 的输出也是不可能的,因为bash 只有在交互模式下才会转到别名定义。
如果我确实在交互模式下运行bash,我会得到一个巨大的延迟时间和一个我想避免的提示输出。
基本上,我想要的是具有与time(1) 类似的行为。它甚至不执行任何命令就查找当前别名! (它只会fork一次,即对于传递的命令)
上网无济于事。
问题:如何在 当前 shell 中查找所有 别名?会不会有便携性问题?如果是,如何避免?
问候。
【问题讨论】: