команда find не может найти zcompile

Добавьте это в свой ~/.bashrc, это гарантирует, что только локальный ttyсможет запускать это программное обеспечение.

Когда пользователь входит в систему через ssh, сервер добавляет aliasк команде, которая просто выводит «Ограничено. Может выполняться только локально».

whichtty=$( ps hotty $$ | grep pts )

if [ $? -eq 0 ]; then
    alias <software_name>='echo Restricted. Can only be run locally.'
else
    echo 
fi

Сеанс SSH будет осуществляться на псевдо-подчиненном терминале (pts), как показано в столбце TTY, но не все соединения ptsявляются сеансами SSH. Например, программы, которые создают терминальное устройство псевдо -, такое как xtermили screen, будут отображаться как pts. Таким образом, недостатком этого скрипта является то, что вы не можете запустить это программное обеспечение из своего локального xtermили screen.

Вам придется запускать программное обеспечение из панели запуска.

2
15.01.2020, 09:24
1 ответ

zcompile — это встроенная оболочка zsh, доступная только внутри оболочки, find— отдельная команда из оболочки, поэтому она не может работать.

zshшарики могут легко заменить findздесь:

set -o extendedglob # for ^, best in ~/.zshrc
for file (./**/^*.zwc(N.)) zcompile $file

(здесь опущены скрытые файлы и файлы в скрытых каталогах, что, вероятно, предпочтительнее; если нет, добавьте квалификатор Dglob ).

Если вы хотите использовать find, вам нужно, чтобы findвыводил список, а оболочка извлекала этот список, чтобы передать его встроенной zcompile. Что-то вроде:

find. ! -name "*.zwc" -type f -print0 |
  while IFS= read -rd '' file; do
    zcompile $file
  done

Или вам нужно findзапустить оболочку zshдля запуска ее zcompileна найденных файлах:

find. ! -name "*.zwc" -type f -exec zsh -c '
  for file do
    zcompile $file
  done' zsh {} +

(обратите внимание, что некоторые findреализации (, включая GNU find), имеют ограничение, которого нет у zshглобусов, заключающееся в том, что их *не будут соответствовать последовательности байтов, которые не образуют допустимых символов. в текущей локали ).

2
27.01.2020, 22:07

Теги

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