Что делает 'огибающие СТОЛБЦЫ =, % S PS …' делает?

так как некоторое время проверка написания является сменной ведьмой, которую необходимо установить на Вас собственный. http://extensions.libreoffice.org/extension-center?getCategories=Dictionary

2
11.03.2014, 03:00
2 ответа

Что делает env COLUMNS =% s?

Он передает переменную COLUMNS со значением % s команде ps и ] забывает , т.е. переменная не влияет на последующие команды.

export сделает переменную доступной и для последующих команд, что может быть, а может и не быть целью.

Говорят:

FOO=bar command

и

env FOO=bar command

идентичны. Однако env допускает параметр -i , который заставляет его игнорировать среду, которую он наследует.

5
27.01.2020, 21:50
[112350] Следующие три фрагмента оболочки эквивалентны (т.е. они выполняют одно и то же, и вы должны копаться в них, чтобы заметить любой другой эффект):

Все они устанавливают переменную окружения [112771] COLUMNS[112772] на значение [112773]%s[112774] для вызова команды [112775]ps[112776]. В командной оболочке значение [112777]COLUMNS[112778], если таковое имеется, остается таким же, как и раньше. Первый фрагмент выполняет этот эффект через внешнюю программу [112779]env[112780], второй - с использованием чистого синтаксиса оболочки, третий - с помощью сборки оболочки [112781] export[112782] в сочетании с конструкцией [112783](...)[112784] subhell. Это отличается от

, которая устанавливает переменную окружения [112785]COLUMNS[112786] таким образом, что она остается в силе в оставшейся части скрипта, и от

, которая в отличие от других устанавливает только переменную оболочки (которую [112787]ps[112788] не увидит), но не экспортирует [112789]COLUMNS[112790] в оболочку окружения. (Однако, если [112791]COLUMNS[112792] уже присутствовал в окружении, то установлено значение [112793]%s[112794]. )

Программа [112795]env[112796] может выглядеть бесполезной, но она существует

потому что старше конструкции оболочки [113044]VAR=value command[113045];

потому что она полезна в других случаях, например, когда программа запускает другую программу, не проходя через оболочку, и вы хотите установить несколько переменных окружения;

потому что она может работать с системами, которые имеют другую оболочку (e. g. в csh или Windows), если команда [113046]env[113047] доступна и в PATH.

Все конструкции, упомянутые здесь, работают в любой оболочке в стиле Борна/POSIX (sh, ash, bash, ksh, zsh, ...), за исключением нескольких старинных версий оболочки Борна, с которыми вы вряд ли когда-нибудь столкнетесь (и которые никогда не были портированы на Linux или OSX).

Обратите внимание, что [112803]COLUMNS[112804] должен быть числом; [112805]ps[112806] игнорирует его, если он не числовой. Zsh даже отказывается устанавливать [112807]COLUMNS[112808] на нецифровое значение, поскольку по умолчанию он объявляет [112809]COLUMNS[112810] числовой переменной. В программе, которую вы цитируете, [112811]%s[112812] будет заменено на число перед использованием строки в качестве команды оболочки.[112367].

4
27.01.2020, 21:50

Теги

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