我已经看遍了谷歌,我发现如何在bash配置文件中更改,但我的项目需要一个内置命令来更改提示符。
我在任何函数外声明了char指针,我的命令修改了它,但是当函数返回(int继续do while循环)并再次显示提示符时,它是空白的。
我尝试过使用结构,联合,甚至第二个char指针,并得到了同样的问题。
我认为使用一个可以在任何函数中访问和修改的全局char指针将是我项目这部分的解决方案。
我很感激,并将尝试任何回应。
编辑:贴在我的手机上,试着问w/o代码,但在这里代码:
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;
}
基本上需要使用fgets
或getline
或更好的,但他们可能使用readline
或editline
。下面是一个使用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] = ' ';
}
}
或者如果您可能尝试使用getchar
自己实现getline
(可能如果getline在您的系统上不可用,或者您只是想知道它是如何工作的)。如果您继续对编写shell感兴趣,那么最终可以继续编写自己的editline
库。