Как это называется, когда вы используете подоболочку, чтобы гарантировать, что временные переменные из команды не останутся без дела?

Используйте find и uniq вместе с sudo :

find / - введите f -iname '* .php' -execdir sudo -u #UID - bash -c 'test -w ./ && pwd' ';' | uniq

Замените UID на несуществующий идентификатор пользователя, поэтому test -w получит истинное значение только из всех прав на запись.

0
16.05.2018, 08:55
2 ответа

Las variables de shell siempre pertenecen al shell actual. Cuando genera una subcapa, es una capa diferente y, por lo tanto, tiene su propio conjunto de variables. En su caso, está ejecutando la subcapa usando (......), por lo que bash organiza que la subcapa inicialmente obtenga una copia de todas las variables de la capa principal, pero eso ya es todo. En particular, los cambios en las variables no se copian cuando finaliza la subcapa, ni las variables creadas en la subcapa se devuelven a la capa principal.

Esta no es una técnica , pero es la forma en que se define el lenguaje bash , y por lo tanto no tiene mucho sentido pedir un nombre para esto.

Toda la idea tiene cierta similitud con el concepto de variables locales en la mayoría de los lenguajes de programación, por lo que podría tener la tentación de llamar a la explotación de esta propiedad "creación de variables locales", pero sería reacio a hacerlo, porque ignora el hecho de que al menos en el punto de invocación de (...), las variables de los shells principales se utilizan para inicializar las variables en el subshell.

2
28.01.2020, 02:32

Это не имеет специального названия, кроме "запуск вещей в подоболочке". Подразумевается, что изменения, внесенные в среду в подоболочке, не отражаются в среде родительской оболочки.

Вы можете называть переменные, созданные внутри подоболочки, «переменными в среде подоболочки».

1
28.01.2020, 02:32

Теги

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