gpt4 book ai didi

C: 列出当前 shell 的别名(不是子 shell!)

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:19 25 4
gpt4 key购买 nike

我正在尝试查找当前 shell 拥有的所有别名(在 C 程序中)。我试过 system("alias")popen("alias", "r")execvp("alias", ...),后者根本不起作用(因为 alias 是特定于 shell 的命令),前两个在 subshel​​l 中运行该命令(这是 sh 而不是 bash)-> 在那里,别名被禁用,因为它们是在我的 ~/.bashrc 中定义的。执行 bash 并读取 alias 的输出也是不可能的,因为 bash 只有在交互模式下才会转到别名定义。

如果我确实在交互模式下运行bash,我会得到一个巨大的延迟时间和一个我想避免的提示输出。

基本上,我想要的是具有与 time(1) 类似的行为。它甚至不执行任何命令就查找当前别名! (它只会fork一次,也就是针对传递过来的命令)

抓取互联网无济于事。

问题:如何在当前shell中查找所有别名?会不会有任何便携性问题?如果是,如何避免?

问候。

最佳答案

你不能。 time 是内置的,它可以访问内部存储到正在运行的 shell 实例的别名。如果您需要弄清楚 shell 将执行什么,则需要运行 which 或类似的东西。

时间并没有做任何聪明或 secret 的事情。它只是命令的前缀,使 shell 打印出一些时间信息。

关于C: 列出当前 shell 的别名(不是子 shell!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17400697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com