Как установить переменные в оболочке Fish? - PullRequest
0 голосов
/ 14 ноября 2018

Команда set в моей оболочке fish в Ubuntu (элементарная ОС и Linux Mint) не работает. Переменные остаются пустыми, и даже примеры в учебных пособиях не работают, т. Е.

(set foo hi -> # Устанавливает значение переменной $ foo равным 'hi'.).

В скрипте я пытаюсь сделать следующее,

set COUNTRY US CN MX

но когда я хочу вызвать переменную $COUNTRY, ответа нет.

Что я делаю не так?

1 Ответ

0 голосов
/ 14 ноября 2018

Вы действительно используете оболочку 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.

...