问题描述

由于配置eclipse命令启动,我修改了 /etc/environment 文件的内容,用命令 shutdown -r -now 重启后,输入密码正确一直返回登录界面。

查了下网上资料:系统启动先调用profile中的环境,后调用environment中的环境;在profile中设了和environment同名的环境时,profile要继承environment环境,不然会引起environment中相关的环境失效,并且profile中的环境变量是有顺序的,顺序反了也会出问题。

也就是我修改的/etc/environment一定出了问题。

在VM下,怎么修改回来?网上找了半天,没遇到具体的方法,花费了番功夫,终于尝试解决了这个问题。

解决方案步骤

1、Ctrl + Alt + F1 进入命令行tty1

2、使用用户名(我的是lsk)密码登录

3、使用完整的vi路径命令: /usr/bin/vi   /etc/environment 进行 vi命令行模式 (command mode/一般模式)

4、输入 i 进入文本输入模式 (input mode/编辑模式)

5、干掉自己配置的语句

6、按 Esc 键 回到 命令行模式

7、输入 : 进入末行模式 (last line mode/指令列命令模式)

8、输入w ! /usr/bin/sudo tee %完成修改 (注意是:w空格!空格/usr/bin/sudo空格tee空格% ,因为 /etc/environment  是readonly,所以需要使用这个命令)

9、输入 :q!退出vi,再输入exit退出,按ctrl + alt + F7 重新进入桌面

 

注:在tty1下,使用cd命令是可以的,其他的类似ls/sudo/vi都要全路径才行

 

附加:vi的三种模式

命令行模式 (command mode/一般模式)
  任何时候,不管用户处于何种模式,只要按一下“ESC”键,即可使Vi进入命令行模式;我们在shell环境(提示符为$)下输入启动Vi命令,进入编辑器时,也是处于该模式下。
  在该模式下,用户可以输入各种合法的Vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则Vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,Vi会响铃报警。
 
文本输入模式 (input mode/编辑模式)
  在命令模式下输入插入命令i(insert)、附加命令a (append)、打开命令o(open)、修改命令c(change)、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按"ESC"键即可。

末行模式 (last line mode/指令列命令模式)
  末行模式也称ex转义模式。
  Vi和Ex编辑器的功能是相同的,二者主要区别是用户界面。在Vi中,命令通常是单个键,例如i、a、o等;而在Ex中,命令是以按回车键结束的正文行。Vi有一个专门的“转义”命令,可访问很多面向行的Ex命令。在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,Vi自动回到命令模式。