今天想看一下 pix2pix的代码,clone下来正打算先跑一遍发现环境崩了。问题大概就是numpy出错了,google了一下没找到原因,打算uninstall重新再装一下。发现无法卸载,无法卸载的原因是用户不在当前环境。这就很奇怪了,虽然第一个numpy被我覆盖重新装解决了,但是对于linux环境的坑,决定把它填上。
Linux系统环境变量:
linux作为多用户操作系统,每一个用户登录,都有一个专门的运行环境并且默认情况下环境都是相同的。在此基础上每个用户配置自己的专属环境变量。一般配环境主要是操作PATH和HOME。
PATH能够制定命令搜索路径,包括库文件。
还会有一些应用程序安装增加的环境变量,java的JAVA_HOME,CLASSPATH等。(配过hadoop的同学都知道,环境变量还蛮多的)
环境变量和shell是相关联的,用户登录会启动一个shell:如bash,但然可以设定或者切换成其他shell。举例说明一些常用的关于环境的命令:
1.显示环境变量:
![0c8537b77a36c5a792e816cf85c954f8.png](https://i-blog.csdnimg.cn/blog_migrate/589426fea62145d194fe5f6e39986091.png)
2.设置新的环境变量
export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该次登陆操作。关闭终端,变量就会删除。
![3e7b52422ff33f1333f99561a3cc4ca0.png](https://i-blog.csdnimg.cn/blog_migrate/15fb20eb25ee89698d00829e90681256.png)
3.env显示当前用户所有环境变量
![d24dcfa56dca254335149f0e18cd4f7a.png](https://i-blog.csdnimg.cn/blog_migrate/369d051f950719273318e195a0a02db1.jpeg)
显示当前用户的环境变量。env中包含的变量很多,包括PATH
本人用的是ubuntu,那ubuntu系统环境文件来举例:
1.系统级文件:
/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。这个文件一般就是调用/etc/bash.bashrc文件
/etc/bash.bashrc:系统级的bashrc文件,为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
/etc/environment: 在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。
2.用户级文件:
~/.profile: 在登录时用到的第三个文件 是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。不推荐放到这儿,因为每开一个shell,这个文件会读取一次,效率上不高。
~/.bash_profile:每个用户都可使用该文件输入专用于自己 使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc是交互式 non-login 方式进入 bash 运行的,通常二者设置大致相同,所以通常前者会调用后者。
系统登录打开shell执行顺序为:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc-> /etc/bashrc -> ~/.bash_logout
设置环境变量的方法:
- 在
/etc/profile
文件中添加变量对所有用户生效(永久的):如添加CLASSPATH。修改后马上生效用,source /etc/profile
不然只能在下次重进此用户时生效。 - 在用户目录下的.bash_profile文件中增加变量。对该用户永久生效。
- 上述通过export只对当前shell生效,关闭shell,变量消失。
常用的环境变量有:
- PATH:指定命令的搜索路径
- HOME:指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)。
- LOGNAME:指当前用户的登录名。
- SHELL:指当前用户用的是哪种Shell。
- LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
- MAIL:指当前用户的邮件存放目录。
目前先填坑在此,关于login, no-login,交互非交互,遇到再填坑