这是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执行的程序.
我通过命令安装了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