1

使用!魔法,我可以访问env类型环境变量,但不能访问终端中定义的变量,或者.bashrc.

$:/<path>/balter/chip-seq-analysis/chipseq$ echo $hg38
/<path>/genomes/hg38/release-85/Homo_sapiens.GRCh38.dna.primary_assembly.fa
balter@exalab3:/<path>/balter/chip-seq-analysis/chipseq$ ipython
Python 2.7.12 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:42:40)
Type "copyright", "credits" or "license" for more information.

IPython 5.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: !echo $hg38


In [2]: !echo $SHELL
/usr/bin/bash

In [3]:
4

1 回答 1

2

如果您的变量未export编辑,则任何子进程都无法访问它们,无论是否是 python。

foo=value

只被当前进程看到(这里bash:)

但如果你这样做(在你的.bashrc):

export foo

或设置和导出:

export foo=value

然后变量对子进程可见。那是你的解决方法。

顺便说一句,获得一个环境。python中的变量,真正的python方式是:

import os
print(os.getenv("foo"))
于 2016-11-21T22:37:40.520 回答