~/.bashrc
C에서 이러한 작업 중 하나를 수행하여 또는 에서와 같이 지속되도록 하는 방법이 궁금합니다 ~/.bash_profile
.
export PATH=~/bin:$PATH
export PS1="$ "
사용해야 하는지 궁금합니다.execl
명령일종의 이런 것입니다:
#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
int main (void) {
return execl("/bin/export", "...", NULL);
}
또는 이를 적절하게 수행하는 또 다른 관용적 C 방법이 있는 경우.
답변1
다른 프로세스의 환경을 수정할 수 없기 때문에 프로그램에서 상위 셸로 변수를 내보낼 수 없습니다.
하위 프로세스를 설정하려면 man setenv
또는 을 참조하십시오 man execve
.
편집하다
차이점은 .bashrc
쉘의 하위 프로세스가 아닌 쉘 자체에 의해 실행된다는 것입니다. 쉘에 의해 실행되므로 쉘의 환경을 수정할 수 있습니다.
이 문제를 해결하는 유일한 방법은 셸에서 실행할 명령을 만드는 것입니다.
main ()
{
printf ("PATH=/dir\n");
}
그런 다음 셸에서 해당 명령의 출력을 실행합니다.
$(./myenv)
또는
./myenv > /tmp/file
source /tmp/file
그러나 자체 환경을 수정하는 것은 여전히 셸이며 일부 프로그램에서 생성된 명령을 실행하여 수정합니다.