Как мне манипулировать элементами $ PATH в сценариях оболочки?
Есть ли идиоматический способ удаления элементов из PATH-подобных переменных оболочки?
Это я хочу взять
PATH=/home/joe/bin:/usr/local/bin:/usr/bin:/bin:/path/to/app/bin:.
а такжеУдалить или жезамещать /path/to/app/bin
без загромождения остальной части переменной. Дополнительные баллы за разрешениеположил новые элементы в произвольных позициях. Цель будет распознаваема по четко определенной строке и может появиться в любой точке списка.
Я знаю, что видел, как это сделано, и, возможно, смогу что-то сделать самостоятельно, но я ищу хороший подход. Портативность и стандартизация плюс.
Я использую bash, но пример приветствуется и в вашей любимой оболочке.
Здесь контекст заключается в необходимости удобного переключения между несколькими версиями (одна для анализа, другая для работы на платформе) большого пакета научного анализа, который создает пару десятков исполняемых файлов, хранит данные вокруг файловой системы и использует переменную среды. чтобы помочь найти все эти вещи. Я хотел бы написать сценарий, который выбирает версию, и нужно иметь возможность удалить$PATH
элементы, относящиеся к текущей активной версии, и заменить их теми же элементами, что и новая версия.
Это связано с проблемой предотвращения повторных$PATH
элементы при повторном запуске сценариев входа в систему и тому подобное.