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

よく読まれている記事

1

  現在5年目のエンジニアで26歳です。 今回は20代の現役エンジニアとして、自分も含め転職について考えている方に向けて20代エンジニア転職に完全特化したおすすめのサービスを3つ紹介していき ...

2

これからエンジニアになりたい、プログラミングを使えるようになりたいという方に向けて 山のようにあるプログラミングスクールの中から、特におすすめなスクールをタイプ別に逆引きで3つ紹介します。 &nbsp ...

3

みなさんはを使っていますでしょうか。   本記事を見ていただいているということは、   プログラミングの勉強でを使うことに興味がある、 もしくはこれから動画を購入したいけどどれを買 ...

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

© 2020 クラインの備忘壺