内置命令来改变自定义linux / unix shell中的提示

时间:2015-10-04 08:36:25

标签: c shell prompt

我已经浏览了整个谷歌,我发现如何更改bash配置文件,但我的项目需要内置命令来更改提示。

我在任何函数之外声明了char指针,我的命令修改它,但是当函数返回时(int继续执行do while循环)并再次显示提示,它是空白的。

我尝试过使用结构,联合,甚至是第二个char指针,并且遇到了同样的问题。

我认为使用可以在任何函数中访问和修改的全局字符指针将是我项目这一部分的解决方案。

我很感激,并会尝试任何回应。

编辑: 张贴在我的手机上,试图询问无代码,但现在是 代码:

char *prmpt;

...
int main(int argc, char **argv)
prmpt="$$ ";
do
{
printf("%s ", prmpt);

}while(1)

int cmd_prompt(char **args)
{
 prmpt = (char*)args[1];
 return 1;
}

1 个答案:

答案 0 :(得分:0)

基本上需要使用fgetsgetline或更好,但他们可能会使用readlineeditline。以下是使用getline

的示例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char *prompt;
    size_t len = 256;
    size_t i = 0;

    if (!(prompt = malloc(256 * sizeof(char))))
        return 1;
    strcpy(prompt, "$");

    while ( 1 )
    {
        printf("[[%s]] ", prompt);
        i = getline(&prompt, &len, stdin);
        prompt[i-1] = '\0';

    }
}

或者,如果您可以尝试使用getline自行实施getchar(可能是您的系统上没有getline,或者您只是想知道它是如何工作的)。如果你继续对编写shell有兴趣,最后继续编写自己的editline库。