Если программа сама запускает другие программы из каталога bin, то при запуске программы версии 1 вы хотите убедиться, что каталог версии 1 находится в ПУТИ перед каталогом версии 2, и наоборот, когда вы запускаетепрограмма версии 2.Это то, с чем я имею дело все время, и я имею дело с этим, гарантируя, что PATH установлен правильно.
В моем $ HOME / bin я бы поместил два сценария:
RunVersion1
export PATH=/path/to/my/old/programs/bin:$PATH
# Set other environment variables as needed
exec runProgram "$@"
RunVersion2
export PATH=/path/to/my/new/programs/bin:$PATH
# Set other environment variables as needed
exec runProgram "$@"
Этот метод размещения сценариев оболочки в моем PATH перед другими программами позволяет мне выбирать, какие программы я запускаю.
Полуобобщенная версия
Часто я использую одну программу для настройки среды, а затем связываю ее с различными именами программ, с которыми я хочу работать.Затем он просматривает $0
и выполняет следующее:
export PATH=/path/to/my/new/programs/bin:$PATH
# Set other environment variables as needed
exec $(basename $0 2) "$@"
Если этот сценарий связан с RunProgram2
, команда basename
отсекает 2 с конца RunProgram2
и затем выполняет RunProgram
из более поздней директории.
Я также использовал этот общий метод для доступа к 32-битной и 64-битной версиям программного обеспечения на одной машине.Программы, с которыми я имею дело, обычно имеют более сложную среду, чем просто параметр $ PATH, поэтому сценарии больше.
Одно из основных преимуществ сценариев в $ HOME / bin по сравнению с псевдонимами и тому подобное заключается в том, чтоне имеет значения, с какой оболочкой я застрял;это работает так же.Кроме того, у меня не так много мест, где можно найти, где определен псевдоним (потому что он не определен).