Python プログラミング

xonshでシステムの環境変数を変更する

xonsh内で環境変数の切り替えを行いたかった時のメモ。

具体的には、awsのプロファイルを切り替える関数を作って、aliasに登録したかった。

 

NGパターン1

import os

def _set_aws_profile(args):

os.environ['AWS_PROFILE'] = args[0]

os.environ['AWS_DEFAULT_PROFILE'] = args[0]

 

aliases['awsp'] = _set_aws_profile

 

os.environではpythonプロセス内での変更のみとなるので、システムの環境変数には影響しない。

 

NGパターン2

def _set_aws_profile(args):

$[export AWS_PROFILE=@(args[0])]

$[export AWS_DEFAULT_PROFILE=@(args[0])]

 

aliases['awsp'] = _set_aws_profile

 

xonshの機能で、$[]でコマンドをくくりexportを使うというもの。

これでいけると思ったが、以下のエラー

xonsh.__amalgam__.XonshError: xonsh: subprocess mode: command not found: export

 

ちなみに、$[]とか@()についてはこちらの記事をご参考ください。

 

OKパターン

def _set_aws_profile(args):

$AWS_PROFILE = args[0]

$AWS_DEFAULT_PROFILE = args[0]

 

aliases['awsp'] = _set_aws_profile

 

なんともまあ、シンプルにかけたもんだ。。

公式のサイトに書いてありました。

 

https://xon.sh/bash_to_xsh.html

-Python, プログラミング
-, ,

© 2020 クラインの備忘壺