Как уже объяснял RalfFriedl, может ли это иметь какое-то влияние, зависит от того, что на самом деле выполняется внутри исходного скрипта. Поскольку вы не сообщили нам содержание этого сценария, мы никак не можем сказать, повлияет это или нет.
В любом случае, я бы счел плохим замыслом делать такой тип проверки во вторых скриптах. Исходные сценарии должны быть написаны таким образом, чтобы они были идемпотентными. -Мне должно быть разрешено использовать исходный код сценария так часто, как я хочу, без каких-либо штрафов.
Есть несколько вещей, которые мы хотим, чтобы «случилось только один раз». Типичным случаем является добавление чего-либо, например, PATH
или LD_LIBRARY_PATH
. Если мы будем использовать скрипт несколько раз, путь будет становиться все длиннее и длиннее. Если мы хотим этого избежать, защита должна идти в исходный скрипт, а не в исходный. Шаблон, который я часто использую, выглядит следующим образом:
# Put /foo/bar on top of PATH
: ${_src_xyz_version:=1}
if [[ ${_SRC_XYZ:=0} != $_src_xyz_version ]]
then
export _SRC_XYZ=$_src_xyz_version
export PATH=/foo/bar:$PATH
fi
В этом случае, после того как PATH был расширен, повторный запуск скрипта в моем процессе или любом подпроцессе -не изменяет PATH снова, если только процесс явно не изменяет запрос, выполнив а
export _SRC_XYZ=0
После переключения моего ядра наlinux-lts
$ pacman -S linux-lts
$ pacman -R linux
$ grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file...
Found linux image: /boot/vmlinuz-linux-lts
Found initrd image: /boot/intel-ucode.img /boot/initramfs-linux-lts.img
Found fallback initrd image(s) in /boot: initramfs-linux-lts-fallback.img
done
$ uname -a
Linux vinayks-pc 5.10.41-1-lts #1 SMP Fri, 28 May 2021 15:03:28 +0000 x86_64 GNU/Linux
наконец-то исчезли сообщения об ошибках и предупреждения.
$ journalctl -p 3 -xb
-- Journal begins at Sat 2021-05-29 17:53:56 IST, ends at Sun 2021-05-30 11:10:>
May 30 10:57:36 vinayks-pc kernel: platform MSFT0101:00: failed to claim resour>
May 30 10:57:36 vinayks-pc kernel: acpi MSFT0101:00: platform device creation f>
May 30 10:57:41 vinayks-pc kernel: kfd kfd: TOPAZ not supported in kfd
May 30 10:58:18 vinayks-pc gdm-password][794]: gkr-pam: unable to locate daemon>
May 30 10:58:22 vinayks-pc pulseaudio[894]: GetManagedObjects() failed: org.fre>
lines 1-6/6 (END)