system() 不适用于修改命令行提示符

system() doesn't work for modifying the command line prompt

本文关键字:修改 命令行 提示符 适用于 不适用 system      更新时间:2023-10-16

我在Ubuntu中使用C ,并要修改命令提示符。如果我在命令行中输入PS1 = ABC,则提示将变为ABC。

但是,如果我执行调用系统的程序(" ps1 = abc"(,则提示不会更改。

另一方面,System((似乎可以通过不同的命令和命令行obeys效法。

PS1是环境变量。每个过程都有自己的环境变量集。

启动一个新过程时,它将继承其父母环境的复制。对过程环境的任何更改都不会影响其父过程的环境。

system功能启动了新的子过程。这意味着system("PS1=ABC")启动了一个设置自己的PS1变量然后退出的子进程。

要在自己的过程中修改环境变量,请使用putenv(Linux和其他UNIX-Likes(或SetEnvironmentVariable(Windows(。请注意,这仍然不会影响您的父进程(可能启动程序的外壳(,因此设置PS1仍然不会有任何影响Div>

system(command)启动子进程。每当完成时,整个环境就消失了。

如果要将环境变量传递到子过程,请查找fork()exec()

或,如果您使用Windows,则CreateProcess