Ваши каталоги изменений сценария когда это работает, что означает это, не будут работать с серией относительных путей. Вы затем прокомментировали позже, что только хотели проверить на существование каталога, не способность использовать cd
, таким образом, ответы не должны использовать cd
вообще. Пересмотренный. Используя tput
и цвета от man terminfo
:
#!/bin/bash -u
# OUTPUT-COLORING
red=$( tput setaf 1 )
green=$( tput setaf 2 )
NC=$( tput setaf 0 ) # or perhaps: tput sgr0
# FUNCTIONS
# directoryExists - Does the directory exist?
function directoryExists {
# was: do the cd in a sub-shell so it doesn't change our own PWD
# was: if errmsg=$( cd -- "$1" 2>&1 ) ; then
if [ -d "$1" ] ; then
# was: echo "${green}$1${NC}"
printf "%s\n" "${green}$1${NC}"
else
# was: echo "${red}$1${NC}"
printf "%s\n" "${red}$1${NC}"
# was: optional: printf "%s\n" "${red}$1 -- $errmsg${NC}"
fi
}
(Отредактированный для использования более неуязвимого printf
вместо проблематичного echo
это могло бы действовать на escape-последовательности в тексте.)
После проверки страниц руководства, документации initscripts (пакет, владеющий сценариями ifcfg) в /usr/share/doc/initscripts-*/sysconfig.txt, списка рассылки initscripts и нескольких ошибок из системы отслеживания ошибок redhat, я понял только одно: чтобы избежать проблем, эти две директивы не следует использовать в одном скрипте ifcfg.
Затем я направил свой вопрос Иржи Пирко, разработчику проекта Network Teaming (libteam). Вот ответ, который я получил от него:
Причина [использования DEVICETYPE] была политическая, а не техническая. Используя DEVICETYPE, вы можете просто установить дополнительные сценарии инициализации с пакетом (teamd). Но это больше не имеет значения, потому что скрипты инициализации теперь напрямую поддерживают команду, так что вы можете использовать TYPE.
Вопреки ответу Иржи, я должен отметить, что согласно моим тестам все еще имеет значение, какая директива используется в моей системе. Интерфейс объединения в сеть работает с директивой DEVICETYPE = Team
, но не работает с директивой TYPE = Team
.
Моя конфигурация:
Обновление от Джири после того, как я указал, что использование DEVICETYPE вместо TYPE по-прежнему имеет значение для интерфейсов объединения:
Поддержка добавляется следующей фиксацией: https: // git. fedorahosted.org/cgit/initscripts.git/commit/?id=3235be4a3da91bc91c698b318935240dbdf81aac
Если этого нет в версии 7.0, я думаю, она будет в версии 7.1