Я знаю, что мой вопрос может показаться глупым, но есть одна проблема, с которой я борюсь последние два дня.
У меня на сервере Ubuntu установлено несколько версий OpenSSL.
Тот, который вам нужен, находится по адресу/opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl
Я хочу, чтобы при вводе адреса openssl
практически любого каталога он переходил к последней версии и выполнял команды openssl соответственно.
Как это сделать? Я пытался просто задать переменную окружения, openssl
но безуспешно.
export OPENSSL=/opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl
Выходecho $OPENSSL
/opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl
Без удачи означает, что всякий раз, когда я печатаюopenssl
я получил
The program 'openssl' is currently not installed. You can install it by typing:
apt-get install openssl
Я знаю, что это как-то связано с конфигами usr/openssl. Но я не помню, как я это делал в прошлый раз :(
Пожалуйста помоги
Заранее спасибо.
решение1
Это не то, как работают переменные окружения. Когда вы запускаете somecommand
, оболочкане важноо переменных типа $somecommand или $SOMECOMMAND. Он будет использовать переменную окружения только если вы действительно ввели $OPENSSL
вместо openssl
. Например:
# ASDF=/opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl
# $ASDF version
OpenSSL 1.1.0
(Некоторые программы действительно заботятся об этом — например, файлы Makefile и скрипты «./configure» часто пишутся для поиска переменных, таких как $PYTHON, — но это не общий случай.)
Единственная переменная среды, котораямогпомощь в вашем случае$ПУТЬ, который содержит список каталогов для поиска команд. Если вы поместите каталог, содержащий 'openssl', перед текущим значением $PATH, то запуск openssl
всегда будет сначала искать в этом каталоге:
PATH="/opt/cprocsp/cp-openssl-1.1.0/bin/amd64:$PATH"
Например:
# which openssl
/usr/bin/openssl
# export PATH="/opt/cprocsp/cp-openssl-1.1.0/bin/amd64:$PATH"
# which openssl
/opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl