vim 无法在 bash shell 中启动

vim 无法在 bash shell 中启动

我的终端(FREE BSD)默认使用 CShell,vim 在该 CShell 下工作正常。但要运行一些测试脚本,我必须使用 bash shell,其中定义了一些环境变量。一旦我进入 bash shell,如果我启动 vim,就会出现此错误

/libexec/ld-elf.so.1: Shared object "libgtk-12.so.2" not found, required by "vim"

vi 运行良好。有人能帮我解决这个问题吗?

答案1

一个合理的解释是,根据你运行的 shell,你有不同的环境变量设置。比较以下输出

echo $PATH
echo $LD_LIBRARY_PATH

在 bash 和 csh 下。可能包括您在 csh 中$LD_LIBRARY_PATH的位置,但不包括在 bash 中的位置。或者可能导致csh 和 bash 中的可执行文件不同(一个在 bash 中需要 gtk,另一个在 csh 中不需要 gtk)。要检查这一点,请在 bash 和csh 下运行。libgtk-12.so.2$PATHvimtype vimwhich vim

编辑:根据您的评论,有一个vim/volume/perl/bin/vim您不起作用,但您还需要一些内容/volume/perl/bin放在首位PATH,可能perl。您有几种解决方案:

  • /volume/perl/bin/vim第一放进去$PATH,然后把alias vim=/usr/local/bin/vim你的.bashrc和你的放进去.cshrc

  • 根本不要输入/volume/perl/bin/vim$PATH但要安排运行 perl 脚本而/volume/perl/bin/vim不是本地 perl。

  • 根本不要输入/volume/perl/bin/vim。相反,先输入,然后从中创建指向所需内容的符号链接,例如。$PATH~/bin$PATH/volume/perl/bin~/binln -s /volume/perl/bin/perl ~/bin

  • 尝试设置PERL5LIB而不是PATH,以防您需要的不是较新版本的 perl 而是一些额外的库。例如(调整到所需的任何目录;您可以通过运行setenv PERL5LIB /volume/perl/lib/perl/5.10来查看 的默认目录)。/volume/perl/bin/perl/volume/perl/bin/perl -le 'map print, @INC'

  • 升级您的 perl 以便您的脚本可以与它们一起工作(也许是除了之前的建议之外)。

  • 安装所需的库/volume/perl/bin/vim

  • vim从......中去除/volume/perl/bin

无论你做什么,我都不建议PATH在不同的 shell 中使用不同的设置,因为这样很快就会让人感到困惑(你已经注意到了)。PATH在 中设置.login(假设csh是你的登录 shell,否则在 中.profile)。

答案2

您提到了终端,但它抱怨的库是一个 GUI 库。您关心 GUI 吗?如果不关心,您可以强制不使用 GUI 并且不尝试加载此库,但我远不是 vim 专家。您甚至可以取消设置 DISPLAY,这样 vim 就必须在终端模式下运行。

正如其他人所回答的,这可能是你的 LD_LIBRARY_PATH,或者你使用的 vim 与你想象的不同。查看 bash 和 csh 中的设置,以及它们之间的区别

另外尝试该ldd命令,它将显示您的应用程序能够加载哪些库。它应该在 bash 上失败以解析

在许多系统上,vi 和 vim 是两个独立的安装,vim 更适合常规编辑,而精简版、依赖性极少的版本称为 vi,用于紧急模式。我相信 vi 可以在任何一种系统中运行。

相关内容