shopt
только влияет на поведение оболочки, в которой выполняется та команда. Если Вы вставляете его ~/.bashrc
затем, это будет влиять на невход в систему, интерактивные оболочки и команды работают на основе rsh/ssh (оболочки входа в систему могут также быть затронуты если ~/.bashrc
получен в ~/.profile
или ~/.bash_profile
).
Установка переменной среды BASHOPTS
кому: extglob
будет влиять на все интерактивные или неинтерактивные оболочки удара, запущенные, в то время как та переменная среды установлена (если их не называют как sh
).
Интерактивные оболочки - то, где Вы хотите иметь extglob
набор, потому что это - то, где Вы хотите использовать его, таким образом, ~/.bashrc
хорошее место состоит в том, чтобы поместить его для пользы из него в каждой интерактивной оболочке. Если Вы хотите использовать его в сценарии, просто добавьте его в начале сценария.
Единственное место, где это могло вызвать проблему, - когда это установлено, в то время как некоторый код, который Вы не написали, не ожидает, что это будет установлено. Это могло быть, например, сценариями, в которых Вы получаете при подсказке или ~/.bashrc
после установки опции.
В то время как это верно для некоторых опций, это не для extglob
поскольку это было тщательно разработано (David Korn, когда это прибывает из ksh), чтобы не повредить обратную совместимость с Оболочкой Bourne (и объясняет, почему синтаксис является настолько неловким).
В основном что-либо с помощью расширилось, шарики будут синтаксической ошибкой в Оболочке Bourne или в синтаксисе оболочки POSIX. Если Граница или сценарий POSIX имели echo @(a)
, это было бы повреждено (из-за неупомянутой круглой скобки). Не имело бы значения, если бы внезапно это начало производить "a" вместо сообщения об ошибке.
То, почему удар не включает его, по умолчанию не ясно мне, учитывая, что удар не имеет никакой другой альтернативы, расширилось, собственный синтаксис шарика как zsh делает.
Править. В то время как David Korn очень старался не повредить совместимость Границы/POSIX, похоже, что удар не был так осторожен и, вероятно, почему как это не включают по умолчанию в ksh.
В ksh (и zsh в ksh эмуляции), расширенные globbing операторы отключены при выполнении globbing на параметр или управляют заменой:
$ touch a
$ a='@(a)' ksh93 -c 'echo $a'
@(a)
В то время как в ударе, это не имеет место:
$ a='@(a)' BASHOPTS=extglob bash -c 'echo $a'
a
или, как указано в комментариях, идентифицируйте строку [11966]logrotate[11967] в выводе команды [11968]crontab -l[11969] и выполните командную строку [11744], обратившись к ответу [11745]slm[11746], чтобы получить точное объяснение cron.daily.
ping google.com >> "%USERPROFILE%\Desktop\list.txt"
Для глобального логротата:
Manual run
Если вы хотите, чтобы он выполнялся вручную, просто запустите скрипт от имени root:
Если вы посмотрите на скрипт, который обычно там есть, он покажет вам, как вы можете также запустить [11759]logrotate[11760] вручную, просто запустив [11761]logrotate[11762] + путь к его конфигурационному файлу.
На моей машине CentOS 6.5 для настройки LOGROTATEFOR для Nginx мне пришлось сделать это:
logrotate /etc/logrotate.d/nginx
, а затем я проверил, если Logrotate ухаживает о моей новой конфигурации Nginx, как это:
cat /var/lib/logrotate.status