Как добавить и удалить имя файла из $ PATH на c языке программирования? - PullRequest
0 голосов
/ 15 апреля 2020

Я обнаружил, что эта ссылка описывает, как добавить имя файла на $PATH, но не на c языке программирования. Когда я запускаю коды, он просто печатает исходный путь вместо измененного пути. Интересно, что когда я ставлю system("echo $PATH:~/opt/bin"), он успешно показывает измененный путь. Кроме того, я не уверен, как удалить то же имя файла (~/opt/bin) из измененного пути.

Мои коды здесь:

int main (void) {

  system("echo $PATH");
  system("export PATH=$PATH:~/opt/bin");
  system("echo $PATH"); //prints out the original $PATH

}

К сожалению, getenv или setenv не изменять путь. Когда я использовал следующий код здесь ,

int main() {
    char *oldenv = strdup(getenv("PATH")); // Make a copy of your PATH
    setenv("PATH", "$PATH:~/opt/bin", 1); // Overwrite it

    system("echo $PATH"); // Outputs "$PATH:~/opt/bin"

    setenv("PATH", oldenv, 1); // Restore old PATH
    free(oldenv); // Don't forget to free!

    system("echo $PATH"); // Outputs your actual PATH
}

, коды печатают жестко $PATH:~/opt/bin вместо обычной команды $PATH.

1 Ответ

0 голосов
/ 15 апреля 2020

Благодаря @clpgr я могу написать следующие коды, чтобы сохранить результат $ PATH в строке символов.

int main (void) {

  char* path;
  path = getenv("PATH");
  if (path)
  {
    printf(path);    
  }  
}
...