我正在尝试使用 fzf 来选择和激活不同的虚拟环境。但是,我收到以下错误:
xargs: source: No such file or directory
我的命令包括三个部分:find | fzf | xargs
(1) find 定位我的虚拟环境,
(2) 使用 fzf 选择虚拟环境,
(3) xargs 用于source
选择的文件。
下面是完整的命令:
find ~/.virtualenvs/ -maxdepth 1 -type d | fzf | xargs -I {} source {}/bin/activate
xargs: source: No such file or directory
我可以直接获取文件(即命令提示符显示进入 fzf_delete 虚拟环境):
brian:~$ source /home/brian/.virtualenvs/fzf_delete/bin/activate
(fzf_delete) brian:~$
我可以使用 fzf 选择虚拟环境:
find ~/.virtualenvs/ -maxdepth 1 -type d | fzf
/home/brian/.virtualenvs/fzf_delete
我还通过删除对 find 和 fzf 的依赖来将问题隔离到 xargs:
echo "/home/brian/.virtualenvs/fzf_delete" | xargs -I {} source {}/bin/activate
xargs: source: No such file or directory
我已经尝试了所有我能想到的引用、变量的使用、字符串连接、命令替换、使用 bash -c 等变体,但都无济于事。
如何让 xargs 获取所选文件的来源?
PS - 我知道如果文件名包含空格,则应将空终止与 find、fzf 和 xargs 一起使用,但这似乎不会导致直接问题。