Как я вношу постоянное, изменение в масштабе всей системы в $PATH

Полагайте, академически, что я выполнился sudo mv /bin /foo. Я не остановился для задавания вопросов, я взял на себя ответственность за свою судьбу и сделал это.

Что я должен был бы сделать, если бы я хотел постоянно изменить в масштабе всей системы $PATH отразить это изменение? Это включает:

  • интерактивные оболочки
  • неинтерактивные оболочки
  • Логины GUI
  • системные службы
  • использование sudo

Причина я спрашиваю это, вода, очень грязно о корректном способе сделать это. Ответы на этот вопрос по-разному предлагают:

  • редактирование ~/.bashrc (не будет влиять, например. bash --norc)
  • редактирование ~/.profile (только влияние входит в оболочки),
  • редактирование /etc/environment (не влияет на sudo; иногда ПУТЬ, кажется, не здесь?)

Есть ли другие базовые системные утилиты, которые, вероятно, вызовут проблемы путем попытки использовать некоторых $PATH копия определила уже другими способами или местами, которые я не покрыл здесь? Как Вы переопределяете $PATH при использовании sudo?

Где делает Тот $PATH Для Управления Их Всех живут, и как я добавляю /foo к нему?

Я знаю, что это спросили набор времен, но существует столько различных вопросов и ответов, плавающих вокруг, и многие из них устарели или покрывают только определенные случаи.

0
задан 5 May 2019 в 01:09

2 ответа

Вы, вероятно, не можете удалить / 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 для получения дополнительной информации.

0
ответ дан 5 May 2019 в 01:09

Я бы сказал, что редактирование /etc/environment — лучший общесистемный вариант.

Однако sudo использует безопасный путь, определенный в: /etc/sudoers

Поэтому я бы сказал, что редактирование этих двух (или только одного из них) было бы лучшим способом для общесистемное изменение пути.

Другие переменные среды (например, JAVA_HOME) также можно установить в /etc/environment.

0
ответ дан 18 November 2020 в 14:12

Другие вопросы по тегам:

Похожие вопросы: