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