我在办公室陷入了一场 IDE 大战,多个用户在我们的服务器上拥有 root 访问权限,并且喜欢用 VIM 按照自己的方式做所有事情。不幸的是,我们的服务器被锁定到足以让你做任何事情,你需要拥有 root 访问权限。显然(虽然这显然是不受欢迎的),我们厌倦了在输入每个命令之前输入 sudo,这将要求我们不断地输入我们一遍又一遍强制要求的非常复杂的密码,所以自然而然地我们都sudo su -
在登录时执行命令以避免所有这些。
当然,当谈到 VIM 和自定义 .vimrc 文件时,我们经常会踩到别人的自定义 .vimrc 文件,并且这些文件中有一些用户的不正常功能可能会覆盖我们不知道的功能,更不用说有耐心去学习了。
当以 root 身份在 Linux 机器上操作时,我们所有人是否都可以保留 .vimrc 文件,而不必在每次有人想要使用 VIM 时一遍又一遍地覆盖该文件?理想情况下,我们有许多虚拟机都安装了 VIM,因此最好在所有服务器上使用通用解决方案,并且我们确实在服务器上的 /home/username 下安装了 Microsoft Windows 用户特定的主目录。
有什么建议可以解决这个问题吗?
答案1
我能想到 3 个选项。第一个可能是最简单的。
像下面这样调用 vim
vim -u /path/to/custom/.conifg fileToEdit
男士入场:-u {vimrc} Use the commands in the file {vimrc} for initializations.
所有其他初始化都会被跳过。使用此选项可编辑特殊类型的文件。它还可用于通过指定名称“NONE”来跳过所有初始化。有关更多详细信息,请参阅 vim 中的“:help initialization”。
-U {gvimrc} Use the commands in the file {gvimrc} for GUI
初始化。所有其他 GUI 初始化都会被跳过。它还可用于通过指定名称“NONE”来跳过所有 GUI 初始化。有关更多详细信息,请参阅 vim 中的“:help gui-init”。
sudo -i
按照@knittl 指定https://stackoverflow.com/questions/6471592/user-unique-vimrc-file-for-servers-as-root-user/6471766#6471766- 最后,https://stackoverflow.com/questions/1031396/how-to-share-one-vimrc-file-among-multiple-clients/1031624#1031624这意味着将一组个人配置文件保存在
git
另一个版本控制系统中。因此,每个用户都可以在登录时签出他们需要的内容。此外,您还可以保留更改的历史记录。版本控制永远不是一个坏主意。
答案2
用于sudo -i
在仍加载当前用户环境的情况下进入 root shell。
-i (模拟初始登录)选项将运行以该用户身份运行命令的 passwd(5) 条目中指定的 shell。传递给 shell 的命令名称参数以 - 开头,以告诉 shell 作为登录 shell 运行。sudo 在运行 shell 之前尝试更改为该用户的主目录。它还会初始化环境,保持 TERM 不变,设置 HOME 、 SHELL 、 USER 、 LOGNAME 和 PATH ,并取消设置所有其他环境变量。请注意,由于要使用的 shell 是在解析 sudoers 文件之前确定的,因此 sudoers 中的 runas_default 设置将指定以该用户身份运行 shell,但不会影响实际运行哪个 shell。