我在基于 LDAP 的用户和主机网络中工作。我的用户存在于所有主机上,因为它是 LDAP 用户,并且我的用户的主目录作为安装点存在于所有主机上。
我已经~/.bash_profile
设置了来源(~/.bashrc
如果存在)。
~/.bashrc
我的最后一行里面是set -o emacs
.
在本地 shell 上,这可以正确设置 emacs 选项,以在登录后启用 emacs 样式的行编辑。
但是,当我 ssh 到另一台主机时,尽管我~/.bashrc
加载了其他所有内容,但它set -o emacs
要么不应用,要么应用然后被覆盖。
因此,目前我set -o emacs
每次 ssh 到另一台主机时都必须手动操作。
是否有解决此问题的方法,以便我可以 ssh 到另一台主机并set -o emacs
在进入交互式 shell 后立即自动运行,启用 emacs 行编辑?
答案1
使用一些strace
命令,我们发现它/etc/inputrc
是在 my 之后加载的~/.bashrc
,并且包含set editing-mode vi
覆盖 my 的调用set -o emacs
。我的本地计算机上不存在该问题/etc/inputrc
,因此问题没有发生在本地主机上。
该 strace 还确定了在加载~/.inputrc
之前查找的内容/etc/inputrc
作为后备。
所以我们touch ~/.inputrc
创建了一个空的inputrc
,瞧,set -o emacs
现在可以使用 SSH 登录了:)
答案2
ssh
在远程主机上启动一个全新的 shell,其标准输入和标准输出将转发ssh
到本地终端。因此,您需要set -o emacs
执行偏僻的主机,而不是您的本地主机。由于emacs
-style 行编辑是默认设置,因此远程文件可能已经包含类似 的行set -o vim
,您应该将其删除。