The random(4) device is per-kernel, not per-jail, so it's not useful for those processes to be running in jails at all.
https://mailing.freebsd.hackers.narkive.com/iq0HeCDX/save-entropy-in-jail-environment
В Bash строки в двойных -кавычках можно использовать обратную косую черту, чтобы убедиться, что следующий символ рассматривается как литерал. То есть ввод аргумента "a\\b"
приводит к передаче литеральной строки a\b
в команду. Из этого мы можем сделать вывод, что в обоих случаях вы передаете hello\\world
в качестве последнего аргумента для echo
и в обоих случаях -каждая пара обратных косых черт расширяется до одной буквальной обратной косой черты перед передачей к echo
.
Флаг -e
для echo
«разрешить [s] интерпретацию следующих символов обратной косой черты» (подробности см. в help echo
). \\
указан там как escape-последовательность для одной обратной косой черты, поэтому в этом случае echo
делает то же самое, что Bash делал с исходной строкой, и сводит две обратные косые черты к одной. Флаг -e
в основном используется для включения управляющих последовательностей, таких как \t
для символа горизонтальной табуляции или \n
для новой строки. Например:
$ echo -e 'first\tsecond\tthird'
first second third
Вместо этого я бы рекомендовал использовать printf
. Во-первых, использование строки формата означает, что мы можем безопасно смешивать предоставленные пользователем -строки с управляющими последовательностями :
$ printf '%s\t%s\t%s\n' 'inject\nescape' '\\' '\evil'
inject\nescape \\ \evil
Во-вторых, не все версии echo
поддерживают -e
, и неосторожное использование переменных без кавычек позволит людям изменить поведение echo
:
$ injection='-e a\nb'
$ echo $injection
a
b
Третий:Эта докторская диссертация -уровень анализа .
В качестве примечания, Bash не обрабатывает обратную косую черту в одиночных -кавычках как escape-символы, поэтому мы получаем следующие результаты:
$ echo 'hello\\\\world'
hello\\\\world
$ echo -e 'hello\\\\world'
hello\\world