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