Что делает `zstyle`?

Когда я вызываю свой скрипт с sudo , он устанавливает $ USER как root.

$ sudo ./myscript.sh

Я попробовал chown $ {USER: = $ (/ usr / bin / id -run)}: $ USER / var / www / $ sitename , но он все равно вернул root.

Я обнаружил, что если я использовал who с awk , я смог бы получить текущего пользователя, который вызвал сценарий с sudo .

currentuser=$(who | awk '{print $1}')}
chown -R $currentuser:$currentuser /var/www/$sitename`
25
01.04.2019, 10:41
2 ответа

Одной из самых неприятных вещей в ZSH является поиск различных команд на справочных страницах. В этом случае документацию для zstyle можно найти в man zshmodulesили здесь онлайн .

This builtin command is used to define and lookup styles. Styles are pairs of names and values, where the values consist of any number of strings. They are stored together with patterns and lookup is done by giving a string, called the ‘context’, which is compared to the patterns. The definition stored for the first matching pattern will be returned.

5
27.01.2020, 19:40

В пространстве zsh очень мало хороших примеров, а документация тупая. Я провел некоторое время, изучая, как Prezto использует zstyle, а также читая документацию и пробуя кое-что. zstyle, по-видимому, в основном используется в дополнениях, но на самом деле он действительно хорош для хранения данных более сложным способом, чем простые -старые -переменные окружения.

Эта суть показывает, как вы можете использовать zstyle для хранения и извлечения информации:

# reference: http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fzutil-Module

# list all zstyle settings
zstyle -L

# store value in zstyle
zstyle :example:favorites fruit apple

# store multiple values in zstyle
zstyle :example:list fruits banana mango pear

# retrieve from zstyle and assign new $fav variable with -g
zstyle -g fav ':example:favorites' fruit && echo $fav

# retrieve from zstyle and be explicit about the assignment data type:
# -a: array, -b: boolean, -s: string
zstyle -a :example:list fruits myfruitlist && echo $myfruitlist

# test that a zstyle value exists with -t
if zstyle -t ':example:favorites' 'fruit' 'apple'; then
  echo "an apple a day keeps the dr. away"
fi
if ! zstyle -t ':example:favorites:vegtable' 'broccoli' 'no'; then
  echo "Broccoli is the deadliest plant on Earth - why, it tries to warn you itself with its terrible taste"
fi

# delete a value with -d
zstyle -d ':example:favorites' 'fruit'

# list only zstyle settings for a certain pattern
zstyle -L ':example:favorites*'
6
27.01.2020, 19:40

Теги

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