calc 命令行工具始终处于交互状态

calc 命令行工具始终处于交互状态

由于某种原因,calc 总是变成交互式的(好像我指定了 -i,或者根本没有指定表达式)。我必须多次按 CTRL-C 才能退出。

~ calc 5+4
    9
^C
[Abort level 1]
^C
[Abort level 2]
^C
[Abort level 3]
^C
ABORT
~ 

它在我的旧 Mac 上运行良好。我使用 brew 安装它(在两台机器上),重新安装 calc 不起作用。可能是什么原因?

编辑:我尝试启动一个干净的 bash shell,检查别名,并尝试-q -e忽略环境和配置文件。但这些都无济于事。

~ type -a calc
calc is /usr/local/bin/calc

~ calc -q -e 5+4不会改变行为。

~ env -i bash --noprofile --norc
bash-3.2$ calc 5+4

也没什么帮助。

~ ls -l /usr/local/bin/calc
lrwxr-xr-x  1 lafp  admin  34 Feb 28 14:43 /usr/local/bin/calc -> ../Cellar/calc/2.12.7.1_1/bin/calc`

我确实发现了一些帮助。切换到其他用户!(在本例中为 root)。

~ sudo su
root@... calc 5+4
    9
root@...

答案1

选项1:

在 zsh 上,calc是一个函数。你可以尝试使用/usr/local/bin/calc

$ which calc
calc () {
    awk "BEGIN{ print $* }"
}

选项 2:尝试使用绝对路径运行命令。/usr/local/bin/calc 5+4\calc 5+4。如果\calc对您有用,则很可能您已为设置了别名calc

答案2

我想我已经明白了:问题出在 rvm。

在我的 .bash_profile 中[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

即使启动新的 bash 或清除环境变量,它仍然保持加载状态,因为env -i它不会清除函数,只会清除变量。

不用说,我以后会尽量避免使用 rvm...它注册了数百个函数。太可怕了。

谢谢大家的帮助!

相关内容