РЕДАКТИРОВАТЬ
К сожалению, 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
}