Переменные среды по определению относятся к процессу.У каждого процесса есть копия среды, которую он может изменить по своим причинам.
Чтобы переопределить PATH
только для одного вызова, все sh
-совместимые оболочки позволяют вам сказать
PATH=newvalue executable with arguments
, который устанавливает PATH
в newvalue
на время выполнения executable with arguments
, затем возвращает значение обратно в предыдущее состояние (текущее значение или не установлено, если оно не было установлено).
Если вы хотите переопределять что-либо в среде каждый раз, когда вы выполняете что-то, вам нужна оболочка.Предполагая, что у вас есть /usr/local/bin
до /usr/bin
в вашем PATH
, вы можете установить это в /usr/local/bin/something
для переопределения /usr/bin/something
с помощью обёртки:
#!/bin/sh
PATH=newvalue
exec /usr/bin/something "$@"
Помните chmod a+x
и, конечно, выдолжен быть root
, чтобы иметь право на запись в этот каталог.
Для ваших личных нужд достаточно функции оболочки в вашем .profile
или подобном.
something () {
PATH=newvalue command something "$@"
}