Каталог /var/spool/cron
содержит пользовательские личные crontab. Эти данные сильно отличаются по своей природе от системных файлов конфигурации -в /etc
. Разрешить etckeeper
обрабатывать их было бы похоже на мониторинг всех личных .bashrc
файлов пользователя и отправку изменений в систему контроля версий, что кажется довольно навязчивым.
Все системные файлы crontab хранятся в /etc
, поэтому по умолчанию они будут обрабатываться в etckeeper
.
Так что я сделал это, используя подоболочку и отключив все функции bash:
(
# in subshell
for line in `declare -F | awk '{print $3}'`; do
unset -f "$line" # unset all bash funcs
done
env
)
но держу пари, есть способ получше
Чтобы перечислить все переменные среды, но не экспортированные функции:
for n in `compgen -e`; do echo "$n=${!n}"; done
Здесь compgen -e
перечислены имена переменных; echo
выводит имена с их значениями. Возможно, вы хотите использовать ${!n@Q}
вместо ${!n}
, чтобы значения были указаны в кавычках, чтобы вывод можно было прочитать из файла или использовать с eval
.
(Редактировать:)
ЗАМЕЧАНИЕ :это не очень хорошо работает, когда задействованы массивы; в отличие от env
, который игнорирует массивы, это печатает значение с индексом 0
для массивов. (Для ассоциативных массивов, если индекс 0
отсутствует, печатается name=
.)
Чтобы понять, как с этим справиться, см. ответы на этот вопрос о переполнении стека .