如何让counsel-rg使用bash作为shell来搜索?

我命令行的默认shell是xonsh,它与counsel非常不搭配,应为它的字符串统统需要“…”来包裹。以前我是通过(setenv "SHELL" "/usr/bin/bash")来绕过xonsh,但是我发现虽然现在(getenv "SHELL")依然是bash,但是counsel-rg依然会使用xonsh,这样的话我就无法使用正则了

edit: counsel-M-x用的是bash

试试设置 counsel-rg-base-command

还可以包装一个脚本强制 bash 调用 rg。

2 个赞

调整选项 shell-file-name

可以只改终端所用的 shell,login shell 不改。


而且执行命令用不着 shell,counsel-rg 可以不依赖 shell,如果作者改代码的话。

2 个赞

可以啦,谢谢!

counsel 大部分是基于counsel–async-command,这个又是调用start-file-process和start-file-process-shell-command,这两个都用到了shell-file-name和shell-command-switch,看一下你这两个变量的内容是什么

1 个赞