Полагайте, академически, что я выполнился sudo mv /bin /foo
. Я не остановился для задавания вопросов, я взял на себя ответственность за свою судьбу и сделал это.
Что я должен был бы сделать, если бы я хотел постоянно изменить в масштабе всей системы $PATH
отразить это изменение? Это включает:
Причина я спрашиваю это, вода, очень грязно о корректном способе сделать это. Ответы на этот вопрос по-разному предлагают:
~/.bashrc
(не будет влиять, например. bash --norc
)~/.profile
(только влияние входит в оболочки),/etc/environment
(не влияет на sudo; иногда ПУТЬ, кажется, не здесь?)Есть ли другие базовые системные утилиты, которые, вероятно, вызовут проблемы путем попытки использовать некоторых $PATH
копия определила уже другими способами или местами, которые я не покрыл здесь? Как Вы переопределяете $PATH
при использовании sudo?
Где делает Тот $PATH
Для Управления Их Всех живут, и как я добавляю /foo
к нему?
Я знаю, что это спросили набор времен, но существует столько различных вопросов и ответов, плавающих вокруг, и многие из них устарели или покрывают только определенные случаи.
Вы, вероятно, не можете удалить / bin навсегда из $ PATH, потому что слишком много сценариев сбросят его, но вы можете сделать некоторые вещи:
Переместить / bin в / foo и затем symlink / foo в / bin: [ 113]
Запустите следующее от имени пользователя root:
cd /; mv bin foo; ln -s foo bin
(Тем не менее, возникает вопрос: если вы намерены получить содержимое / bin в / foo, почему бы не просто использовать символическую ссылку / bin на / foo?)
Затем вы можете установить свой собственный PATH в /etc/rc.local. Это будет получено при загрузке независимо от того, вошел ли кто-либо в систему. Вам нужно будет создать файл, если он не существует. Systemd должен забрать это. man systemd-rc-local-generator
для получения дополнительной информации.
Я бы сказал, что редактирование /etc/environment
— лучший общесистемный вариант.
Однако sudo
использует безопасный путь, определенный в: /etc/sudoers
Поэтому я бы сказал, что редактирование этих двух (или только одного из них) было бы лучшим способом для общесистемное изменение пути.
Другие переменные среды (например, JAVA_HOME
) также можно установить в /etc/environment
.