在jupyter笔记本中使用bash_配置文件别名
我的Jupyter笔记本似乎收集了我在在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
.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)