Лично я хожу с `судо -УГ`, когда я хочу, чтобы среда не тронутая моими настройками, потому что я использую zsh и все приложения учетные записи, я, возможно, изменю, чтобы использовать bash. Это позволяет определенное количество переменных среды проходят беспрепятственно, но мне, как правило, найти тех, кто вам перезаписывается файл /etc/профиль.д/*. Никто? А что в этом такого? Эй @woozyman дружище. Приятно слышать, что я помог и что он работает. Было бы интересно для меня узнать, что именно вы сделали, чтобы решить ее. И кстати: вы не должны положить<solved>` в названии. А принимать тот ответ, который решил проблему или написать свой ответ, объясняя, в чем была проблема и какое решение было. Вы можете принять ваш собственный ответ после 2 дней.

В внутреннее устройство интерпретатора языка программирования, я использую следующий код, чтобы получить себе путь:

#если __Линукс__
статические get_self_path вал(пустота)
{
 голец личность[PATH_MAX] = { 0 };
 инт типа nchar = более ранних версий ("в/proc/самоуправления/ехе", самовывоз, размер самовыдвижение);

 если (типа nchar < 0 || типа nchar >= преобразовать(инт размер самостоятельно))
 вернет nil;
 возвращение string_utf8(самовыдвижение);
}
#Элиф HAVE_WINDOWS_H
статические get_self_path вал(пустота)
{
 тип wchar_t себя[в max_path] = { 0 };
 Параметра dword типа nchar;

Функции setlasterror(0);
 типа nchar = GetModuleFileNameW(нуль, я, в max_path);

 если (типа nchar == 0 ||
 (типа nchar == в max_path &&
 ((И getlasterror() == ERROR_INSUFFICIENT_BUFFER) ||
 (самовыдвижение[в max_path - 1] != 0))))
 вернет nil;

 возвращает строку(self);
}
#еще
статические get_self_path вал(пустота)
{
 голец личность[PATH_MAX];

 если (!progname_u8)
 вернет nil;

 если (реального пути(progname_u8, самовыдвижение))
 возвращение string_utf8(самовыдвижение);

 вернет nil;
}
#за endif

В Валь тип, нулевой символ, и функции, строковый и string_utf8 являются внутренними для переводчика. преобразование - это просто макрос, который абстрагирует формы. Конечно, некоторые заголовочные файлы, необходимые для более ранних версий, реального пути и так далее.

progname_u8 это просто глобальная переменная инициализируется непосредственно из argv[0]. в ОС Unix это не Linux, мы используем, что и назвать реального пути на то, чтобы получить абсолютный путь.