Eu tentei o que você descreveu e a solução é usar .
em vez de source
, que é basicamente um alias do primeiro.
Você também deve especificar explicitamente ./FILENAME
se o arquivo estiver no diretório atual.
Por favor, veja minha sessão de exemplo:
Python 2.7.10 (default, Oct 14 2015, 16:09:02)
[GCC 5.2.1 20151010] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.system("source .bashrc")
sh: 1: source: not found
32512
>>> os.system(". .bash_aliases")
sh: 1: .: .bash_aliases: not found
512
>>> os.system(". ./.bash_aliases")
0
>>> os.system(". ~/.bash_aliases")
0
>>> os.system(". /home/USERNAME/.bash_aliases")
0
Um valor de retorno de 0
indica sucesso.
No entanto, não tenho certeza se a origem de um arquivo produz os resultados desejados, já que esse método executa o comando especificado em um subshell e não tenho certeza se isso também afeta a sessão de shell desejada.