来自非 bash shell 的 xclip 不持久

xclip from non-bash shell not enduring

在 bash 中,echo toast | xclip -sel c 将 toast 保存在剪贴板中,即使我关闭了终端。为什么这在其他 shell 中似乎不是持久的?

python3.5:

import os
os.system("echo toast | xclip -sel c")

完成工作,但是当我按下 CtrlC 时,剪贴板是空的。一个简单的 CtrlD 不会 清除剪贴板/工作正常。

tclsh:

exec /bin/echo toast | xclip -sel c

甚至保持进程打开,所以我不得不终止它。

这是一个错误吗?这怎么可能?或者我误解了什么?

编辑。找不到解决方案。我制作了一个 wish (Tcl/Tk)-脚本,包括一个 exec /bin/echo toast | xclip -sel c 行并关闭了 window。剪贴板现在 。我试过 -display,但 display 和 xauthority 都设置正确。 pythons pyperclip 和 xerox 也出现了同样的问题。

编辑2。这个问题可以简化为这个问题:https://unix.stackexchange.com/questions/316715/xclip-works-differently-in-interactive-and-non-interactive-shells 除了使用 xsel -ib 存储剪贴板之外似乎没有其他好的选择。

尝试继续管道或重定向输出。对我来说,它在 tcl 中的工作:

exec printf "%s" $var | xclip -selection c | echo

或:

exec printf "%s" $var | xclip -selection c > /dev/null