我想在我的系统上用 IPython 替换 bash,这样即使是像 .profile 这样的文件也是 Python 而不是 shell 脚本。
尽管就此事提出了一些问题,但我对这个话题还是有些困惑。以下是我之前问过的问题:
从这个问题的答案中,我学会了如何用 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)
.如果您确实想要这个,您可以设置一个由 python 解释的 shebang (#!) 脚本,并将其设为您的用户 shell。然后,您可以使用从脚本进入交互模式code.interact()
。
但这不会很好地工作(如果有的话)。 Python 的交互模式不能执行 shell 的大部分功能(例如作业控制),并且os.system
没有帮助,因为您的系统 shell 现在是 Python。