Как мне манипулировать элементами $ PATH в сценариях оболочки?

Есть ли идиоматический способ удаления элементов из PATH-подобных переменных оболочки?

Это я хочу взять

PATH=/home/joe/bin:/usr/local/bin:/usr/bin:/bin:/path/to/app/bin:.

а такжеУдалить или жезамещать /path/to/app/bin без загромождения остальной части переменной. Дополнительные баллы за разрешениеположил новые элементы в произвольных позициях. Цель будет распознаваема по четко определенной строке и может появиться в любой точке списка.

Я знаю, что видел, как это сделано, и, возможно, смогу что-то сделать самостоятельно, но я ищу хороший подход. Портативность и стандартизация плюс.

Я использую bash, но пример приветствуется и в вашей любимой оболочке.

Здесь контекст заключается в необходимости удобного переключения между несколькими версиями (одна для анализа, другая для работы на платформе) большого пакета научного анализа, который создает пару десятков исполняемых файлов, хранит данные вокруг файловой системы и использует переменную среды. чтобы помочь найти все эти вещи. Я хотел бы написать сценарий, который выбирает версию, и нужно иметь возможность удалить$PATH элементы, относящиеся к текущей активной версии, и заменить их теми же элементами, что и новая версия.

Это связано с проблемой предотвращения повторных$PATH элементы при повторном запуске сценариев входа в систему и тому подобное.

Предыдущий похожий вопрос:Как избежать дублирования переменной пути в cshПоследующий аналогичный вопрос:Какой самый элегантный способ удалить путь из переменной $ PATH в Bash?

Ответы на вопрос(11)

Ваш ответ на вопрос