В zsh, как Вы перенаправляете stderr к/dev/null в для или цикл foreach?

Несколько мыслей:

   fastcgi_param SCRIPT_FILENAME /var/www/eman$fastcgi_script_name;

Делает эту потребность дополнительная наклонная черта

   fastcgi_param SCRIPT_FILENAME /var/www/eman/$fastcgi_script_name;

NGINX имеет что-то вроде странной вещи кэширования также, поэтому при попытке URL в браузере добавьте a? random=12391 в конец для принуждения обновления. Я озадачивался в течение 30 минут по конфигурации только, чтобы найти, что она работала все время, но за меня спотыкался кэш.

Вы также, вероятно, хотите выйти из своего местоположения немного лучше (хотя это не вызывает эту проблему, которую Вы имеете), Это - лучшая практика:

location ~ .php$

кому:

location ~ \.php$

.php$ соответствовал бы запросу, такому как yourpagephp, а не просто yourpage.php

2
задан 12 April 2013 в 01:11
3 ответа

После того, как я позже отправил электронное письмо в список рассылки пользователей zsh, мне было предложено почти идеальное решение проблемы:

if [[ -d "/etc/zsh.d" ]]; then
  for f in /etc/zsh.d/*.zsh(N); do
    source $f
  done
fi

(N) указывает zsh установить параметр NULL_GLOB для этого шаблона. Если совпадений не найдено, глобус заменяется пустой строкой, а не выдаёт ошибку. В zsh цикл for над пустым расширением ничего не делает, что нам и нужно здесь.

4
ответ дан 3 December 2019 в 08:54

Надеюсь, вы понимаете, что почти весь синтаксис sh отлично работает в zsh?

# Check dir exists then that there are files in it (silently!)
# If there are no .zsh files in /etc/zsh.d then an empty argument
# is passed to for, which then simply skips the loop

if [ -d /etc/zsh.d ]; then
    for file in $(find /etc/zsh.d/ -name '*.zsh'); do
        source $file
    done
fi

Я попытался сделать это как можно быстрее, так как вы используете сценарий входа в систему.

Это должно сработать для всей семьи Борнов.

1
ответ дан 3 December 2019 в 08:54

Синтаксический анализ ls - плохая идея .

Вместо этого вы можете просто использовать подстановку оболочки для получения списка файлов:

if [[ -d "/etc/zsh.d" ]]; then
  for f in /etc/zsh.d/*.zsh; do
    source $f
  done
fi

Что касается перенаправления , Я не уверен, какова его цель в вашем примере, но если вы используете этот метод, то ошибку может выдать оболочка, а не ls , поэтому выполните перенаправление после выполнения в для цикла .

3
ответ дан 3 December 2019 в 08:54

Теги

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