如何用 IPython 替换我的“基本系统 shell”?

如何用 IPython 替换我的“基本系统 shell”?

我想在我的系统上用 IPython 替换 bash,这样即使是像 .profile 这样的文件也是 Python 而不是 shell 脚本。

尽管就此事提出了一些问题,但我对这个话题还是有些困惑。以下是我之前问过的问题:

1)如何用 Python 替换 bash?

从这个问题的答案中,我学会了如何用 IPython 自动替换 bash登录(注意它仍然使用shell脚本编写的.profile)。

2).profile 是用 shell 脚本编写的——我可以让我的系统明白我希望它执行 Python 脚本吗?

从这个问题的答案中,我了解到 .profile 文件是“来源”而不是“执行”的——也就是说,.profile 中的行是一一运行的,就像将它们输入到 shell 中一样。

所以,我现在的问题是:如何让我的基本系统 shell 成为 IPython,以便它可以使用 IPython magics/Python 来获取 .profile 文件?例如,我想使用 IPython magics/Python 编写我的 .profile 文件。

答案1

如果您有兴趣使用 Python 作为 shell 语言和命令提示符,您应该研究一下克森什。它是一个基于 Python 的 shell,您可以在其中用 Python 编写脚本。

答案2

如果您希望进程将 Python 作为默认 shell 启动,您可以使用以下命令login(1)更改文件中的 shell :/etc/passwd

usermod -s /usr/bin/python yourusername

.profile脚本仍然不会被执行。该文件名/位置被硬编码到bash(1).如果您确实想要这个,您可以设置一个由 py​​thon 解释的 shebang (#!) 脚本,并将其设为您的用户 shell。然后,您可以使用从脚本进入交互模式code.interact()

但这不会很好地工作(如果有的话)。 Python 的交互模式不能执行 shell 的大部分功能(例如作业控制),并且os.system没有帮助,因为您的系统 shell 现在是 Python。

相关内容