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

РЕДАКТИРОВАТЬ

К сожалению, 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.

Конец редактирования

Я обнаружил, что эта ссылка предоставляет способ добавления имени файла в $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

}
...