相关疑难解决方法(0)

为什么sudo会改变PATH?

这是PATH没有sudo 的变量:

$ echo 'echo $PATH' | sh 
/opt/local/ruby/bin:/usr/bin:/bin
Run Code Online (Sandbox Code Playgroud)

这是PATHsudo 的变量:

$ echo 'echo $PATH' | sudo sh
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
Run Code Online (Sandbox Code Playgroud)

据我所知,sudo应该PATH保持不变.这是怎么回事?我该如何改变?(这是在Ubuntu 8.04上).

更新:据我所知,没有任何脚本PATH以任何方式作为root更改.

来自man sudo:

为了防止命令欺骗,当在用户的PATH中搜索命令时(如果一个或两个都在PATH中),sudo会检查``.''和``''(都表示当前目录).但请注意,实际的PATH环境变量未被修改,并且不会更改地传递给sudo执行的程序.

sudo path environment-variables

279
推荐指数
7
解决办法
13万
查看次数

激活virtualenv的问题

我通过命令安装了python环境:

SYS_INSTALL="apt-get install -y"
PIP_INSTALL="pip install"

# Be sure to install setuptools before pip to properly replace easy_install.
$SYS_INSTALL git 
$SYS_INSTALL python-dev
$SYS_INSTALL python-setuptools
$SYS_INSTALL python-pip
$PIP_INSTALL virtualenv
Run Code Online (Sandbox Code Playgroud)

还能够创建新的虚拟环境:

virtualenv .env
Run Code Online (Sandbox Code Playgroud)

但是,在运行如下命令之后:

. .env/bin/activate
Run Code Online (Sandbox Code Playgroud)

我有

-bash:.env/bin/activate:没有这样的文件或目录

查看文件夹后,.env/bin我发现只有一个python文件.这里的整个文件列表:

.env/lib:
python2.7

.env/include:
python2.7

.env/bin:
python
Run Code Online (Sandbox Code Playgroud)

这是什么问题?

解决方案添加--always-copy

virtualenv .env - always-copy

bash pip virtualenv python-2.7 ubuntu-14.04

8
推荐指数
5
解决办法
2万
查看次数