В настоящее время я перехожу с конфигов bash на рыбу и застрял, переводя мой экспорт через bash. Кажется, есть три способа сделать это в Fish, которые выполняют свою работу, но я не могу сказать, какой из них мне следует использовать, или если у них есть побочные эффекты, о которых я не знаю

set -g VAR value
set -x VAR value
set -xg VAR value

Конечно, они не все делают одно и то же. Может кто-нибудь объяснить, в чем различия и в каких ситуациях каждый уместен, пожалуйста?

1 ответ1

3

Нет, они не все делают одно и то же. Флаг -x ортогонален флагам -g , -l и -u . Первый просто устанавливает атрибут экспорта в var. Последние три определяют область действия вар. Вы можете иметь глобальный, неэкспортированный, VAR и внутри функции set -lx VAR value для создания экспортируемого экземпляра с локальной областью действия. Когда управление возвращается из функции, глобальная область видимости VAR снова появляется, и она не будет экспортирована.

Если вы используете последнюю версию (2.7, может быть, 2.6), вы можете set --show VAR для отображения значений во всех трех областях и того, экспортируется ли каждая из них.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .