Добавьте общедоступную клавишу SSH к авторизованным_Казам пользователя

Сообщество NixOS имеет три руководства, всегда сначала консультируйтесь с ними, если вы застряли:

Каждый пакет на Nix определяется выражением Nix. Выражение Nix - это некоторый текст, написанный на языке Nix, обычно находящийся в файле с расширением .nix .

Каждое выражение имеет так называемое «символическое имя», удобочитаемое имя, которое печатается при использовании nix-env . См. образец выражения Nix . Сам Nix нигде внутри не использует это символическое имя, поэтому не имеет значения, называется ли ваш пакет aspell-dict-en , это просто для вашего удобства.

Что действительно важно, так это так называемый «путь атрибута». Итак, вы путаете символическое имя и путь к атрибуту. У каждого пакета есть путь к атрибуту, который можно использовать в параметре конфигурации environment.systemPackages для установки в масштабе всей системы с использованием декларативного управления пакетами .

Чтобы узнать путь к атрибуту вашего пакета, добавьте еще один флаг -P в свой запрос:

$ nix-env -qaP 'aspell.*en'
nixos.aspellDicts.en  aspell-dict-en-7.1-0

Вам должно быть удобно использовать nix-env каждый день, поэтому практикуйтесь вызов nix-env с параметрами - запрос и - установка .Однако вы также можете просмотреть пакеты и узнать пути к их атрибутам в Интернете в Поиске пакетов Nix . Введите aspell , щелкните aspell-dict-en , и вы увидите различные свойства пакета, включая путь атрибута как часть команды установки:

$ nix-env -iA nixos.pkgs.aspellDicts.en

Теперь вы можете поместить этот атрибут путь в /etc/nixos/configuration.nix :

environment.systemPackages = with pkgs; [
  aspellDicts.en
];

Затем обновите систему, запустив переключатель sudo nixos-rebuild .

1
27.09.2018, 19:33
2 ответа

Комментарий Джеффа Шаллера ссылка на носу. Ключевое сообщение из руководства bash(https://www.gnu.org/software/bash/manual/bashref.html#Simple-Command-Expansion)

When a simple command is executed, the shell performs the following expansions, assignments, and redirections, from left to right.

  1. The words that the parser has marked as variable assignments (those preceding the command name) and redirections are saved for later processing.
  2. The words that are not variable assignments or redirections are expanded (see Shell Expansions). If any words remain after expansion, the first word is taken to be the name of the command and the remaining words are the arguments.
  3. Redirections are performed as described above (see Redirections).
  4. The text after the ‘=’ in each variable assignment undergoes tilde expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal before being assigned to the variable.

Шаг 1 идентифицирует перенаправления и сохраняет их.
На шаге 2 происходит расширение переменных.

Оболочка не видит перенаправлений на шаге 1.

Также важно:Я пытаюсь поместить команду в переменную, но сложные случаи всегда терпят неудачу!

2
27.01.2020, 23:23

Плохое решение — форсировать двойную оценку:

eval "$TEST1"

Хорошим решением является семантическое разделение команды (url, content):

curl -v --silent "$url" |& grep "$content"

Примечание:|&— синтаксический сахар для2>&1 |

1
27.01.2020, 23:23

Теги

Похожие вопросы