【问题标题】:.exrc not working.exrc 不工作
【发布时间】:2013-01-19 17:05:25
【问题描述】:

我是 unix 新手。我在我的主文件夹中创建了一个 .exrc 文件。我刚刚输入 set nu 并在 .exrc 中设置 ai 进行检查。但是每当我打开 vi 编辑器时,这都不起作用。

此外,我以超级用户身份输入,输入 su 和密码,现在在 vi 编辑器中打开了一个新文件,现在它可以工作了。

我们是否需要拥有超级用户权限才能拥有此权限?请帮助我。

【问题讨论】:

  • 请仔细检查实际发生的情况,我无法重现

标签: bash unix vi


【解决方案1】:

这是我认为正在发生的事情:

  1. vi 实际上是vim 的链接或别名,vi 的现代版本。
  2. 您有一个.vimrc 文件,vim 将读取它而不是.exrc
  3. 作为超级用户,vi 不是指向vim 的链接,会忽略.vimrc 并读取.exrc

检查输出

$ which vi
$ ls -l `which vi`
$ ls ~/.vimrc

解决方案是使用.vimrc 而不是.exrc

【讨论】:

  • 是的,这行得通...我将 .exrc 的文件内容复制到 .vimrc,现在它可以正常工作了..我只是有一个疑问...如果我以超级用户身份登录,如果 exrc 的内容和vimrc不同,现在读哪一个。?并感谢您的帮助
  • 很高兴听到!作为一个小小的历史课,最初的vi 是一个名为ex 的编辑器的面向屏幕的版本,但它自己没有任何不是有效的ex 命令的命令,所以它只是使用相同的配置文件。另一方面,vim很多 个命令在 vi 中不起作用,因此有自己的文件以避免兼容性问题。
  • 至于您的其他问题,作为超级用户输入vi 将运行该命令,而不是vim,因此它将始终使用.exrc。不过,即使是超级用户,您也可以显式运行 vim
  • 是的,没错,现在我有不同的 exrc 和 vimrc 文件,不同的是我没有将 set nu 放在 vimrc 中。我以超级用户身份登录,并输入 vi 文件名,所以它执行 exrc,显示行号。现在我输入了vim file2,但是现在它显示了行号,表明它仍然在这里使用exrc文件...请澄清
  • 作为超级用户,我相信它正在寻找 /root/.vimrc 和 /root/.exrc 而不是你的 ~you/.*rc。
【解决方案2】:

首先,通过在 vi 中运行 :source $HOME/.exrc 确保您的 ~/.exrc 是可读的,并且它确实有效。

如果您使用的是更“传统”的 vi(不是 Vim),可能是由于额外的权限问题。关于 ex 的 POSIX 文档说:

从历史上看,如果 $HOME 和本地 .exrc 文件归用户的真实 ID 所有,或者设置了 sourceany 选项,则 4 BSD ex 和 vi 会读取这些文件,而不管其他考虑。这是一个安全问题,因为可以将普通的 UNIX 系统命令放在 .exrc 文件中。 POSIX.1-2017 未指定 sourceany 选项,鼓励历史实现将其删除。

确保您是~/.exrc:chown <your-username> ~/.exrc的所有者

此外,如果您碰巧使用ex-vi(“传统vi”),则~/.exrc 不能是组可写或全局可写的。运行chmod go-w ~/.exrc 以确保这一点。来自 09/23/00 版本的变更日志的参考:

  • POSIX.2:如果 .exrc 文件是世界或组可写的,它们将被忽略 除非设置了“sourceany”。

【讨论】:

    猜你喜欢
    • 2012-07-16
    • 2021-01-10
    • 1970-01-01
    • 2012-09-29
    • 2019-01-19
    • 1970-01-01
    • 2018-12-22
    • 2016-04-19
    • 1970-01-01
    相关资源
    最近更新 更多