Creo que estás buscando la señal RETURN
:
[...] If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell.
[...] If a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a script run by the. or source builtins finishes executing.
Ejemplo:
$ bash
$ trap "echo shell exiting" EXIT
$ fn() { trap "echo function exiting" RETURN; }
$ fn
function exiting
$ (fn)
function exiting
$ value=$(fn); echo "$value"
function exiting
$ exit
shell exiting
y, en relación con la pregunta:
$ f2() {
local tmp=$(mktemp)
trap 'rm "$tmp"' RETURN
echo "$tmp"
date >> "$tmp"
cat "$tmp"
}
$ f2
/tmp/tmp.MHpI20X0a1
Fri May 11 14:29:01 EDT 2018
$ ls -l /tmp/tmp.MHpI20X0a1
ls: cannot access '/tmp/tmp.MHpI20X0a1': No such file or directory
Поскольку вы отметили свой вопрос как Manjaro и rxvt, я предполагаю, что вы используете эмулятор терминала rxvt -unicode . В этом случае вы можете использовать:
bindsym $mod+F1 exec --no-startup-id urxvt -e nvim
Даже если вы используете другой терминал, в большинстве эмуляторов есть аналогичная опция для выполнения команды при запуске.