在jupyter笔记本中使用bash_配置文件别名

在jupyter笔记本中使用bash_配置文件别名,bash,jupyter-notebook,jupyter,.bash-profile,Bash,Jupyter Notebook,Jupyter,.bash Profile,我的Jupyter笔记本似乎收集了我在.bash\u配置文件中导出的所有内容,但没有我的别名 我想使用了bin/sh,因此bash配置文件中的别名没有移植是可以理解的,但是%%bash魔术也没有拾取我编写的别名 有没有办法通过使bash配置文件中的别名可用(理想情况下)或至少使用%%bash 这似乎有效(python3,由我在a中发现的一个hack修改而来) 这里还有另一种选择,与其说是解决方案,不如说是解决办法:您可以使用%aliasmagic在笔记本本地定义别名,并在将来使用%storema

我的Jupyter笔记本似乎收集了我在
.bash\u配置文件中导出的所有内容,但没有我的
别名

我想
使用了
bin/sh
,因此bash配置文件中的别名没有移植是可以理解的,但是
%%bash
魔术也没有拾取我编写的别名

有没有办法通过
使bash配置文件中的别名可用(理想情况下)或至少使用
%%bash

这似乎有效(python3,由我在a中发现的一个hack修改而来)

这里还有另一种选择,与其说是解决方案,不如说是解决办法:您可以使用
%alias
magic在笔记本本地定义别名,并在将来使用
%store
magic使这些别名可用。这里有更多别名技巧:

有关
%store
magic的更多信息,请点击此处:

下一步是破解
%store
魔法以保留这些别名:


对于子孙后代,以下是我在最终找到解决方案之前进行的一些实验的结果:

我在%%bash单元格中获取了我的.bash\u配置文件。在这个单元中,我可以查询我在.bash_配置文件中定义的变量值,并且可以通过调用
alias
列出别名命令。但是,我仍然无法使用别名命令。此外,my.bash_配置文件中定义的变量只能通过源调用在单元格内部访问:在随后的%%bash单元格中尝试访问这些变量无效,
alias
命令也失败。更有趣的是:如果我使用
源代码,我无法查询bash配置文件中定义的变量,也无法用
列出我的别名同一单元格中的shell命令

可以说,
%%bash
魔术很挑剔

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)