В конце концов я отвечаю сам себе.
OpenVPN был запущен как цель systemd (? ), а его конфигурационный файл указан PrivateTmp=true
. Итак, он действительно работал, и скрипт действительно запускался, но он не записывался в фактическую папку /tmp.
И, кстати, также следует использовать полный путь к бинарным файлам (например. /usr/bin/whoami
), так как $PATH
исполняемого скрипта может не совпадать с $PATH
обычного шелла.
Невозможно указать встроенному -виджету backward-kill-word
(, который убивает следующее слово слева от курсора ), чтобы он сделал это, но вы можете просто свернуть свой собственный:
backward-kill-word() {
# LBUFFER -- all text left of the cursor
# (z) -- split into shell words
# (A) -- force the resulting words into an array
# [-1] -- take the right-most element
# :t -- strip all path ancestors from it
# % -- remove the shortest matching substring from the right
LBUFFER=${LBUFFER%${${(zA)LBUFFER}[-1]:t}*}
zle -f kill # Tell the Zsh Line Editor that we've killed text.
}
zle -N backward-kill-word # Replace the default widget.
Замена kill-word
(, уничтожающая следующее слово справа от курсора ), очень похожа:
kill-word() {
# RBUFFER -- all text to the right of the cursor
# [1] -- take the left-most element
# :h1 -- strip all path descendants from it
# # -- remove the shortest matching substring from the left
RBUFFER=${RBUFFER#*${${(zA)RBUFFER}[1]:h1}}
zle -f kill
}
zle -N kill-word
Если вы не против ввести несколько клавиш, вы можете использовать ^R / ^K
, чтобы вернуться к предыдущей косой черте, а затем убить до конца строки. Если изначально после курсора есть еще слова, вы можете использовать ^@ ^R / ESC-x kill-region RET
(, к сожалению, kill-region
по умолчанию не привязан к клавише; привязка Emacs ^W
вместо backward-kill-word
дается для совместимости со стандартными привязками tty ).
В режиме vi, начиная с командного режима и заканчивая режимом вставки, вы можете использовать что-то вроде T/C
для удаления до конца строки или vT/s
или dT/s
для удаления до исходного местоположения курсора включительно.
select-word-style shell
может вас заинтересовать :это заставляет движение слов использовать синтаксис оболочки.
autoload -Uz select-word-style
select-word-style shell
К сожалению, это не решает вашу проблему, потому что косая черта является частью слова. Я не вижу способа использовать его, чтобы останавливаться на определенных символах в словах, не меняя код match-words-by-style
.