我在shell脚本中创建virtualenvwrapper项目时遇到问题。当我在shell中创建项目时,一切正常。但是想要在shell脚本中创建它。
请帮我解决这个问题。
我试图找到答案。但似乎没有人在shell脚本中创建virtualenvwrapper项目时遇到麻烦。
我使用的是Ubuntu 14.04。 我已经安装了" virtualenvwrapper"包:
sudo pip install virtualenvwrapper
并将这些行写入〜/ .bashrc:
export WORKON_HOME=~/work/.envs
export PROJECT_HOME=~/work/projects
export VIRTUAL_ENV_DISABLE_PROMPT=
source /usr/local/bin/virtualenvwrapper.sh
激活的bash配置文件:
$ source ~/.bashrc
并创建项目目录:
$ mkdir -p $PROJECT_HOME
当我跑步时:
type mkproject
在终端中它返回我:
mkproject is a function
mkproject ()
{
typeset -a in_args;
typeset -a out_args;
...[and more lines after]
}
从脚本执行此命令时,它返回:
./setup2.sh: line 2: type: mkproject: not found
命令
$ ls -l setup2.sh
返回:
-rwxrwxr-x 1 name name 49 марта 23 12:55 setup2.sh*
之后我创建了shell脚本(setup2.sh),其中包含以下行:
#!/bin/bash
mkproject test_env
当我按相对路径运行此脚本时:
$ ./setup2.sh
或aboslute path:
$ /home/name/env/setup2.sh
它说:
./setup2.sh: line 2: mkproject: command not found
但是当我运行在终端中创建项目的命令时:
$ mkproject test_env
一切正常
答案 0 :(得分:0)
这可能有多种原因,但我会首先在脚本中输出$ PATH并验证它是否包含mkproject应该在的目录。
您还应该验证mkproject确实是可执行文件,而不是别名或函数,因为默认情况下不会导出函数。为此,在控制台中运行命令
type mkproject
答案 1 :(得分:0)
在shell脚本中执行mkproject
很简单。您只需完成使交互式shell可用的相同步骤,即采购~/.bashrc
脚本。
只需在脚本中包含这个内容:
source /PATH/TO/YOUR/.bashrc
完成此操作后,您可以像往常一样运行mkproject
。
请注意,如果您的脚本使用set -e
之类的严格错误检查,则需要暂时缓解上述错误检查以及脚本中对virtualenvwrapper
函数的任何调用,例如:
set +e
source /PATH/TO/YOUR/.bashrc
set -e
和
set +e
mkproject WHATEVER
set -e
我不确定为什么会发生这种情况,但virtualenvwrapper
函数返回非零退出代码,即使是成功的操作,也会完全抛出错误捕获约定。