在 jupyter notebook 中使用 bash_profile 别名
Use bash_profile aliases in jupyter notebook
我的 Jupyter notebook 似乎在我的 .bash_profile
中收集了我 export
的所有内容,但没有我 alias
.
的内容
我认为 !
使用 bin/sh
,所以可以理解 bash 配置文件的别名没有移植过来,但是 %%bash
魔法也没有拿起我写的别名。
是否可以通过 !
(理想情况下)或至少使用 %%bash
使我的 bash 个人资料中的别名可用?
这似乎有效(python3,根据我在 jupyter issue 中发现的 hack 修改)
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
使这些别名可用魔法。这里有更多的别名技巧: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 单元格中找到了我的 .bash_profile。在那个单元格中,我能够查询我在 .bash_profile 中定义的变量的值,并且能够通过调用 alias
列出别名命令。但是,我仍然无法使用别名命令。此外,我的 .bash_profile 中定义的变量只能通过源调用在单元格内访问:尝试在随后的 %%bash 单元格中访问它们不起作用,并且 alias
命令也失败了。更有趣的是:如果我使用 !
进行采购,我无法查询在我的 bash 配置文件中定义的变量,也无法在相同的 !
shell 命令中列出我的别名细胞.
我只想说,%%bash
魔术是挑剔的。
我的 Jupyter notebook 似乎在我的 .bash_profile
中收集了我 export
的所有内容,但没有我 alias
.
我认为 !
使用 bin/sh
,所以可以理解 bash 配置文件的别名没有移植过来,但是 %%bash
魔法也没有拿起我写的别名。
是否可以通过 !
(理想情况下)或至少使用 %%bash
使我的 bash 个人资料中的别名可用?
这似乎有效(python3,根据我在 jupyter issue 中发现的 hack 修改)
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
使这些别名可用魔法。这里有更多的别名技巧: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 单元格中找到了我的 .bash_profile。在那个单元格中,我能够查询我在 .bash_profile 中定义的变量的值,并且能够通过调用 alias
列出别名命令。但是,我仍然无法使用别名命令。此外,我的 .bash_profile 中定义的变量只能通过源调用在单元格内访问:尝试在随后的 %%bash 单元格中访问它们不起作用,并且 alias
命令也失败了。更有趣的是:如果我使用 !
进行采购,我无法查询在我的 bash 配置文件中定义的变量,也无法在相同的 !
shell 命令中列出我的别名细胞.
我只想说,%%bash
魔术是挑剔的。