virtualenvwrapper.sh中的"$(command \which python)"是什么意思?
描述问题
意思: 获取Python的位置
获取Python路径,应该有几种写法,自己一下想到的是which
,怎么也不会想到command
这种命令(事实上,很少见到这个命令),然考虑到写这个脚本(virtualenvwrapper.sh)的是大神,必然shell编程经验比我丰富,踩过的坑比我多,这样写必然有其道理, 所以这道理
是啥?
具体地,我将问题拆解成以下几个:
\which
是啥?用
$(which python)
不可以吗?command
是一个啥命令? (man command
没有输出)
上下文环境
Linux
Python2.7
重现
virtualenvwrapper是常用的Python包,它是利用了shell包装了virtualenv,所以我想看看它的shell实现
然发现,有些部分不是很懂
要重现,可以去看virtualenvwrapper.sh这个脚本
注意: 在不同Linux发行版,不同shell(bash/zsh)程序中的位置不同(具体见官方手册)
相关代码
摘取部分代码
# Locate the global Python where virtualenvwrapper is installed.
if [ "$VIRTUALENVWRAPPER_PYTHON" = "" ]
then
VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi
# Set the name of the virtualenv app to use.
if [ "$VIRTUALENVWRAPPER_VIRTUALENV" = "" ]
then
VIRTUALENVWRAPPER_VIRTUALENV="virtualenv"
fi
# Set the name of the virtualenv-clone app to use.
if [ "$VIRTUALENVWRAPPER_VIRTUALENV_CLONE" = "" ]
then
VIRTUALENVWRAPPER_VIRTUALENV_CLONE="virtualenv-clone"
fi
已经尝试哪些方法仍然没有解决(附上相关链接)
Google了:
command \which python
问题简化
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
没有任何道理,可能这个脚本的作者是个老古董,不习惯bash吧。
作者在这一段注释中已经说明了,目的是为了多平台兼容
bash 文档中的解释: