2017-03-29 14 views
0

내 Jupyter 노트북이 내 export이 내 .bash_profile에 모든 것을 집어 넣는 것처럼 보입니다. 그러나 나는 alias이 아닙니다.jupyter 노트북에서 bash_profile 별명 사용

나는 !bin/sh 사용 생각, 그래서 bash는 프로필에서 별칭을 통해 포트를하지 않는 것을 이해할 수 있지만, %%bash 마법 또한 내가 작성한 별칭을 선택하지 않습니다.

내 배쉬 프로파일에서 별칭을 ! (이상적) 또는 최소한 %%bash을 통해 사용할 수있게 할 방법이 있습니까?

답변

1

이것은 (python3이 해킹에서 수정 나는 jupyter issue에 있음) 여기

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 프로필에 정의 된 변수를 조사하거나 동일한 셀에 ! 쉘 명령으로 내 별칭을 나열 할 수 없었습니다.

충분하다고 말하면, %%bash 마술은 까다 롭습니다.