2017-03-29 8 views
0

私Jupyterノートは私の.bash_profileで私はexportすべてが、私alias何を拾うように見えます。使用bash_profile別名

私はbin/shを使用していると思いますので、bashプロファイルのエイリアスは移植されませんが、%%bashの魔法も私が書いたエイリアスを拾いません。

私のbashプロファイルでエイリアスを!(理想的)から利用できるようにするか、少なくとも%%bashを使用する方法がありますか?

答えて

1

これは、(私がjupyter issueで見つかったハックから変更のpython3を、)動作するようです

import subprocess 

lines = subprocess.check_output('source ~/.bash_profile; alias',shell=True).split(b'\n') 
manager = get_ipython().alias_manager 
for line in lines: 
    line = line.decode("utf-8") 
    split_index = line.find('=') 
    cmd = line[split_index+1:] 
    alias = line[:split_index] 
    cmd = cmd[1:-1] 
    print ("ALIAS:{}\t\tCMD:{}".format(alias,cmd)) 

    manager.soft_define_alias(alias, cmd) 

ここでは、回避策未満のソリューションです別の代替は、です:あなたが使用してノートブックにローカルエイリアスを定義することができます%aliasの魔法を使用し、将来的には%storeという魔法を使ってこれらのエイリアスを利用できるようにします。ここではより多くの別名trickiness:https://github.com/ipython/ipython/wiki/Cookbook:-Storing-aliases

もっとここ%store魔法に:http://ipython.readthedocs.io/en/stable/config/extensions/storemagic.html

次のステップは、これらのエイリアスを永続化する%store魔法をハッキングされています。後世のためにhttps://github.com/ipython/ipython/blob/master/IPython/extensions/storemagic.py


を、ここでの結果は最終的に解決策を見つける前にいくつかの実験を実行しました。

私は%bash_profileを%% bashセルに入れました。そのセルの中から、自分の.bash_profileで定義した変数の値を調べることができ、aliasを呼び出してエイリアス化されたコマンドを列挙することができました。しかし、私はまだエイリアスコマンドを使用することができませんでした。さらに、私の.bash_profileで定義された変数は、ソースコールのあるセル内でしかアクセスできませんでした。後続の%% bashでアクセスしようとすると、セルが機能せず、aliasコマンドも失敗しました。さらに興味深いことに:私が!を使用していた場合、自分のbashプロファイルで定義された変数を調べることができず、同じセルに!シェルコマンドで別名をリストアップすることもできませんでした。

十分に言えば、の魔法はかわいいです。

関連する問題