V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhanglintc
V2EX  ›  问与答

安装 rvm 后导致 Linux 下的 ctrl-c 快捷键失效?

  •  
  •   zhanglintc · 2018-09-13 23:31:42 +08:00 · 3745 次点击
    这是一个创建于 2298 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这个事儿吧有点扯, 说来话长.

    就是正常来说, 登录 Linux 以后, 你点击 ctrl-c 快捷键, 屏幕上会出现 ^C 字样并新起一行吧? 而且你随便运行一个程序后点击 ctrl-c 也应该会发送 sigint 给该程序使得该程序正常终止吧?

    现在的问题就是我的 ctrl-c 完全失效了. 点了以后上面的效果都没有了. 我之前有一台虚拟机就遇到过这个问题, 研究半天没搞明白, Google 也没有答案. 于是就放弃了, 直接重装了虚拟机.

    今天我的 vultr 服务器也出现了这种状况, 但是我不想重装, 只能凭感觉挨个把最近安装过的东西删掉看能否正常. 结果删除了 rvm(这个大家知道吧? Ruby 的一个管理软件) 以后, ctrl-c 就恢复了. 回忆了一下之前虚拟机当时其实也是装了 rvm 之后不久就出现了这个不正常状况.

    所以我的结论就是 rvm 导致我的 ctrl-c 失效了. 不知道有没有人遇到过类似的情况? 我反正觉得肯定是 rvm 附带安装的什么脚本或者什么东西把 ctrl-c 发出的信号给拦截了, 导致 ctrl-c 失效.

    或者有没有人能给个思路怎么样去调查和证明到底是什么东西拦截了 ctrl-c 发出的 sigint 信号呢?

    写得可能稍微有点啰嗦, 希望大家能耐心看完...

    第 1 条附言  ·  2018-09-14 09:53:32 +08:00

    看了 issue 后加上我的实际情况顺便总结一下,已确认使用以下命令安装 rvm 后

    gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
    
    curl -sSL https://get.rvm.io | bash -s stable
    

    如果 rvm -v 的版本是 1.29.4,那么 ctrl-c 就会失效。

    此时查看 trap 会显示:

    [lane@vultr ~]$ trap
    trap -- '' SIGINT
    trap -- '' SIGQUIT
    trap -- '' SIGTSTP
    trap -- '' SIGTTIN
    trap -- '' SIGTTOU
    [lane@vultr ~]$ 
    

    可见比正常情况多出了 SIGINTSIGQUIT

    临时解决方案可以是:trap - INT QUIT,这样就可以使用 ctrl-c 了。但是有个问题是使用 cd 命令切换目录后还是会失效。所以这个方案并不是太好。

    不过反正他们讨论的结果是已经解决了这个 bug,所以我们直接下载最新的 rvm 好了:

    rvm get head
    
    5 条回复    2018-11-21 11:16:25 +08:00
    sammo
        1
    sammo  
       2018-09-13 23:35:44 +08:00 via iPhone
    rbenv 是 rvm 的替代品
    ysc3839
        2
    ysc3839  
       2018-09-13 23:48:34 +08:00 via Android
    搜索 issue 发现是已经被修复的。
    https://github.com/rvm/rvm/issues/4422
    msg7086
        3
    msg7086  
       2018-09-14 03:18:22 +08:00
    我现在已经不用 rvm 了。新版本兼容性足够好,2.1 到 2.5 的代码基本随便跑了。Debian 官方源直接一把梭 install ruby2.5 解决。
    zhanglintc
        4
    zhanglintc  
    OP
       2018-09-14 09:21:57 +08:00
    @ysc3839 #2 原来如此。 当时好像搜索到过这条 issue,但是那时还没有确认是 rvm 的锅,所有都没仔细点开看。这下确认了就是这个问题了。感谢。
    guodage003
        5
    guodage003  
       2018-11-21 11:16:25 +08:00
    确实是,在配置 redis 集群时顺便安装了 1.29.4 的 rvm
    升级后就好了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2501 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:55 · PVG 12:55 · LAX 20:55 · JFK 23:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.