Arch Linux -Bluetooth-мышь не подключается автоматически

Вы можете передать шелл-код в переменной окружения в скрипт, нет проблем, но скрипт должен ожидать шелл-код в переменной и оценивать его как таковой:

См., например,. разница между

$ env USER='$(echo hello)' bash -c 'echo "$USER"'
$(echo hello)

и

$ env USER='$(echo hello)' bash -c 'eval "echo \"$USER\""'
hello

В обеих вышеуказанных командах часть кода передается в $USERсценарию bash -c. Код представляет собой простую подстановку команд, которая при оценке выводит строку hello, а вызывающая оболочка будет , а не оценивать подстановку команд, поскольку это строка в одинарных кавычках. Первый скрипт bash -cне оценивает строку, поэтому печатает шелл-код. Второй скрипт bash -cоценивает переданную строку как часть вызова echoи, следовательно, печатает echo(, он в основном выполняет echo "$(echo hello)".

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

Я думаю, что вы хотите передать строку , а не шелл-код:

$ env USER="$(echo hello)" bash -c 'echo "$USER"'
hello

Здесь переменная USERустанавливается в строку helloперед вызовом сценария bash -c(, поскольку оболочка расширит подстановку команд в двойных кавычках ). Затем скрипт берет строку и повторяет ее. В вашем случае скрипт возьмет строку и будет использовать ее как часть имени пути.

Дело в том, что строка вычисляется пользователем до того, как скрипт получит ее.

0
19.11.2021, 22:59
1 ответ

У меня была такая же проблема с той же мышью,

обязательно настройте автоматическое питание вbluetooth.conf:

установить tlpпакет для сценариев управления питанием и замаскировать службу rfkill:

1
27.11.2021, 00:31

Теги

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