Почему на справочной странице bash написано, что на специальные параметры «можно только ссылаться; присвоение им значения не разрешено»?

Проблема в том, что при использовании NetworkManager нет сетевого подключения во время входа в систему. NetworkManager имеет -пользовательский список сетей Wi-Fi, и он не входит в сеть, пока пользователь не войдет в систему.

Решение состоит в том, чтобы нажать кнопку «Настройки» в сети Wi-Fi в «Настройках сети» и установить для сети значение «доступно для всех пользователей».

После установки этого параметра ноутбук автоматически подключается к Wi-Fi при загрузке. Затем, когда пользователь входит в систему, сеть уже работает, и магия автоматического билета Kerberos может работать.

-2
08.04.2020, 20:51
2 ответа

Вы не можете назначать специальные параметры. Вы не можете использовать оператор присваивания (1=foo, @=(foo bar), ?=0, … ). Вы не можете использовать конструкцию расширения параметра присваивания (${1=foo}, … ).

Конечно, вы можете изменить их, но вы должны использовать косвенный метод, отличный от присваивания, такой какset(с не -аргументами опции )или встроенными функциями shiftдля установки позиционных параметров и $#,set(с опциями )для изменения $-, запуска команды для установки $?и т. д.

В качестве исключения вы можете присвоить _, хотя обычно это не привязывается(_=foo a=$_устанавливает aк fooи _к пустой строке ).

3
28.04.2021, 23:18

Суть вашего вопроса заключается в том, что такое задание. man bashпо-видимому, не определяет его, но в спецификации POSIX есть об этом слово:

4.23 Variable Assignment

In the shell command language, a word consisting of the following parts:

varname=value

Вы можете изменять специальные параметры $@и $*с помощью некоторых встроенных -средств оболочки, но вы не можете на самом деле записать для них присвоение. Я бы сказал, что они были выбраны мудро, потому что действительно было бы очень неестественно писать *=stringдаже для не очень опытных глаз.

3
28.04.2021, 23:18

Теги

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