Вы действительно используете оболочку fish
?Поскольку ваш пример работает для меня:
$ set COUNTRY US CN MX
$ echo $COUNTRY
US CN MX
$ set --show COUNTRY
$COUNTRY: not set in local scope
$COUNTRY: set in global scope, unexported, with 3 elements
$COUNTRY[1]: length=2 value=|US|
$COUNTRY[2]: length=2 value=|CN|
$COUNTRY[3]: length=2 value=|MX|
$COUNTRY: not set in universal scope
Я подозреваю, что вы пытаетесь использовать COUNTRY
в другом процессе.В этом случае вам нужно экспортировать переменную, используя set -x COUNTRY US CN MX
.Но обратите внимание, что переменные fish являются массивами, и экспорт переменной с более чем одним значением не будет понятен дочернему процессу (если этот дочерний процесс не является оболочкой рыбы).
Кроме того, может показаться, что выпытаясь изменить переменную в родительском процессе с помощью скрипта fish.Это не сработает.Вы не можете изменять переменные родительского процесса.Даже если они являются переменной среды.Это не ограничение рыбы.Он присущ дизайну модели процесса UNIX.