принудительная загрузка функции завершения для zsh (без принудительного ее выполнения по нажатию tab)

Я разобрался.

    #!/bin/bash
set -x
grep -q 'PASS_WARN_AGE    7' /etc/login.defs
if [ ${?} -eq 0 ]; then
        echo "RHEL-06-000054 not a finding"

grep -q 'PASS_WARN_AGE    0' /etc/login.defs
elif [ ${?} -eq 0 ]; then
        sed -ie 's/PASS_WARN_AGE\s\s\s\s0/PASS_WARN_AGE    7/g' /etc/login.defs; echo "RHEL-06-000054 patched"

else echo "needs further review"
fi
2
23.05.2017, 15:40
2 ответа

В zsh вы можете передать флаг + X в автозагрузку , чтобы загрузить функцию из $ fpath , не выполняя ее.

Кроме того, вы можете скопировать функцию с новым именем, манипулируя массивом functions .

autoload -Uz +X _normal
functions[_original_normal]=$functions[_normal]
_normal () {
  …
}
2
27.01.2020, 22:10

пока я запускаю

_normal &> /dev/null || true

_normal , так как другие завершения обычно не должны вызываться напрямую из оболочки, и (без перенаправления) появляется сообщение об ошибке:

_default: compcall: 12: может быть только вызывается из функции завершения

|| true здесь кажется ненужным, поскольку _normal , вызванный таким образом, не возвращает код ошибки.

0
27.01.2020, 22:10

Теги

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