Здесь -документ типа <<-SCRIPT
действует как строка в двойных -кавычках, поскольку в ней обрабатываются расширения. Чтобы этого не произошло, укажите разделитель:
$ cat <<EOF
1+1 = $((1+1))
EOF
1+1 = 2
против
$ cat <<'EOF'
1+1 = $((1+1))
EOF
1+1 = $((1+1))
Итак, здесь:
cat <<-SCRIPT >test-$$
...
osType=$(grep -Po '^NAME="\K[^"]*' /etc/os-release)
Команда grep
находится внутри подстановки команд, которая обрабатывается, поскольку SCRIPT
не заключена в кавычки, поэтому она выполняется, когда используется здесь -документ.
Здесь, с другой стороны:
cat <<-SCRIPT >test-$$
#!/bin/bash
rpm -q somepackage > test-$$
rm test-$$-lock
exit
SCRIPT
подстановки команд нет, поэтому команды не выполняются. Часть rpm -q somepackage
— это просто текст. Однако с разделителем без кавычек $$
внутри документа -будет немедленно расширен до того же значения, которое используется в имени выходного файла. То есть, если PID текущей оболочки равен 1234, команда cat
создаст test-1234
, содержащую строку rpm -q somepackage > test-1234
.
С разделителем в кавычках $$
будет оставлен как -, а результатом будет файл с именем test-1234
, содержащий rpm -q somepackage > test-$$
. Если вы сейчас запустите test-1234
как скрипт, тогда $$
будет расширен, и будет использоваться PID этой оболочки. Вероятно, оно будет отличаться от значения, использованного при создании файла.
В любом случае $$
в rpm.. > test-$$
и rm test-$$-lock
будут расширены до одного и того же значения.
Драйверы Wi-Fi и Bluetooth можно внести в черный список, поскольку они загружаются как модули. Вам нужно будет изменить для ваших конкретных драйверов, но вы можете использовать что-то похожее на
#> cat >> /etc/modprobe.d/blacklist.conf
blacklist rtw88_8821ce
install rtw88_8821ce /bin/false
^D
Чтобы отключить интерфейсы Ethernet, вам нужно добавить правило в udev. Для eth0 добавьте это правило вetc/udev/rules.d/90-disable-eth0.rules
ACTION=="add", SUBSYSTEM=="net", ENV{ID_NET_NAME_ONBOARD}=="eth0", RUN+="/bin/sh -c 'echo 1 > /sys$DEVPATH/device/remove'"
Внесите необходимые изменения для конкретных интерфейсов.
Скомпилируйте собственное ядро, отключите все функции сети/wifi/ethernet/bluetooth для этого ядра.