Учитывает ли zsh shebang bin/sh, чтобы можно было использовать тире?

But I can’t find anywhere else information on how to leave tcpdump working as a service. Logging should be kept constantly.

Если вы хотите, чтобы tcpdump работал в фоновом режиме и выполнял запись в файл журнала, вы можете сделать что-то вроде

tcpdump -i INTERFACENAME -e > /path/to/log.txt 2>&1 &

Имейте в виду, что строк будет много, поэтому применяйте фильтры по мере необходимости.

1
15.04.2020, 05:11
2 ответа

Шебанг действует только в том случае, если вы выполняете сценарий напрямую без указания способа его запуска ; то есть с чем-то вроде ./scratch.shили /path/to/scratch.shили поместив его в каталог в вашем PATHи просто используя scratch.sh.

Если вы запускаете его с помощью какой-либо другой команды, она управляет тем, что с ней делается, (переопределяя шебанг ). Если вы используете bash scratch.sh, он запускается в bash; если вы используете zsh scratch.sh, он запускается в zsh; если вы используете sh, он работает в любом shв вашей системе(dashв вашем конкретном случае ).

Если вы используете source scratch.shили . scratch.sh, он запускается в текущей оболочке , какой бы она ни была. В этом вся цель команд .и source. И снова шебанг здесь игнорируется.

2
19.03.2021, 02:28

Вы не можете этого сделать. . scriptили source scriptпросто включает в себя script, для этого не требуется отдельная стандартная или нестандартная оболочка -. Что касается шебангов, то для zshэто просто комментарии.

Однако вы можете поручить zsh(попытаться )временно эмулировать стандартную оболочку. YMMV.

emulate sh -c '../scratch.sh'

emulate which_sh -c strбудет оценивать strс указанной эмуляцией, временно действующей, и, что более важно, заставит ее «прилипать» к любым функциям, определенным во время оценки str, вызывая автоматическое включение режима эмуляции во время их выполнения..

2
19.03.2021, 02:28

Теги

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