C에서 'PATH 내보내기' 방법

C에서 'PATH 내보내기' 방법

~/.bashrcC에서 이러한 작업 중 하나를 수행하여 또는 에서와 같이 지속되도록 하는 방법이 궁금합니다 ~/.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

그러나 자체 환경을 수정하는 것은 여전히 ​​셸이며 일부 프로그램에서 생성된 명령을 실행하여 수정합니다.

관련 정보