linux2——虚拟环境问题

时间:2022-09-19 05:20:29

python环境

python2和python3命令用来区分python版本

pip2和pip3命令用来区分pip,你的包到底安装在哪里pip3 install xxx

sudo apt install python3-pip这是安装pip3

安装虚拟环境

 

.sh文件:

脚本文件,一般都是bash脚本。想运行的话就用sh命令运行 sh xxx.sh,.sh为Linux的脚本文件,我们可以通过.sh执行一些命令,可以理解为windows的.bat批处理文件

点命令:.

命令和source是同一个命令,可以理解为source的缩写,简称点命令。

执行方式:

1)./test.sh

2)sh test.sh

3). test.sh

4)source test.sh

他们有何区别?

1)第一种方式,是在当前的shell执行脚本本身,也就是说把test.sh当成一个文件执行,这时候我们需要拥有test.sh的运行权限(x权限),而且当我们在执行此命令时,有2个新进程在运行,一个是test.sh,一个是sleep,如果我们在执行第一个sleep时按ctrl+c终止脚本,test.sh和sleep一起终止,并且第二个sleep不会执行,因为整个test.sh运行已经终止。

2)第二种方式,是新建一个shell执行test.sh脚本里面的命令,不需要执行权限,有读取权限(r权限)即可,在执行此命令时,有2个新进程在运行,一个是bash,一个是sleep,如果执行第一个sleep时按ctrl+c,bash被终止,结果和第一种方式一样,第二个sleep不会执行。

3)第三种方式,是在当前shell执行test.sh里面的命令,不需要执行权限,有读取权限(r权限)即可,在执行此命令时,只有一个新进程在运行,就是sleep,如果在执行第一个sleep时按ctrl+c终止,那么第二个sleep接着运行,直到脚本所有命令执行完。

4)第四种方式和第三种方式一致。

export:(sourse在当前shell中执行,而.是调用了一个子shell)

1. 如果把几个设置环境变量写成一个脚本,例如test.sh
export test1='aaa'
export test2='bbb'
然后在提示符下键入: ./test.sh
再键入echo $test1
你将看不到任何东西。 原因是: 这样执行是时候是调用一个子shell,当子shell结束时,变量也就结束了生命。因此是看不到的。
==================================
2. 用source test.sh时,可以看到结果输出。这证明,source是在当前shell环境中执行的。
==================================
3. 如果把上例子写成下面的形式

export test1='aaa'
export test2='bbb'
echo $test1
echo $test2
然后执行,有输出了。可以看到
aaa
bbb
但用echo $test1却什么也没有。 原因是: 执行调用一个子shell,把结果输出到终端,所以我们可以看到结果。
========================
4. 在提示符下键入bash, 创建一个子shell
在提示符下输入如下的形式:
export test1='aaa'
echo $test1
可以看到有输出aaa
然后用exit退出子shell,回到父shell
echo $test1
什么也看不到。

 ~/.bashrc()

1.加环境变量

假定想添加的环境变量路径为:/opt/my-tools/Android-sdk/tools

1 进入用户的根目录

cd $HOME 或 cd ~

2 然后打开.bashrc若不存在则新建.bashrc文件

vim .bashrc(新建文件)

3 在.bashrc页面最后加上想要加的路径

export PATH=$PATH:/opt/my-tools/android-sdk/tools

4 最后执行

source ~/.bashrc

2.说明

1.Linux系统默认使用的shell为bash,在shell启动的时候会读取根据情况读取.bash_profile和.bashrc文件。
准确的说,当shell是交互式登录shell时,读取.bash_profile文件,如在系统启动、远程登录或使用su -切换用户时;当shell是交互式登录和非登录shell时都会读取.bashrc文件,如:在图形界面中打开新终端或使用su切换用户时,均属于非登录shell的情况。
简单的说,.bash_profile只在会话开始时被读取一次,而.bashrc则每次打开新的终端时,都会被读取。
2.~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。所以一般优先把变量设置在.bashrc里面。比如在crontab里面执行一个命令,.bashrc设置的环境变量会生效,而.bash_profile不会。
3.配置文件有两个级别, 系统级(/etc)和用户级(~/), 每次调用优先调用系统级, profile用于登录式shell, 而bashrc用于每个交互式shell
4.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有”.”是用来表示当前目录的。sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

3.创建虚拟环境

python版本要对应

安装1:把下面几行加入

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7 # 这句是为了防止环境变量$PATH中已有其它环境的python export WORKON_HOME=$HOME/.virtualenvs # 放所有虚拟环境的地方 source /usr/local/bin/virtualenvwrapper.sh #激活virtualenvwrapper
source ~/.bashrc

安装2:设置环境变量,把下面两行添加到~/.bashrc里。

if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
fi
执行source ~/.bashrc , 然后就可以使用virtualenvwrapper了。

注意:
if  条件
then
 Command
else
 Command
fi