【发布时间】:2012-09-24 16:18:58
【问题描述】:
要使 Python 脚本在 Linux 和 bash 上可执行,可以使用 shebang
#! /usr/bin/env python
作为脚本的第一行。如果此行恰好以 Windows 样式的换行符 \r\n(回车 - 换行符)而不是 Unix 样式的换行符 \n 结尾,那么 bash 将无法通过 Python 解释器运行脚本。
我正在使用 Python 进行跨平台开发。当我在 Windows 中工作时,自然换行符是 \r\n。当我在 Linux 中工作时,自然换行符是 \n。鉴于我使用 Mercurial 进行版本控制,在包含 shebang 的脚本文件中强制使用 \n 换行符的最佳方法是什么?
【问题讨论】:
-
尝试将shell的注释字符添加到行尾。
-
您可以将您的 Windows 编辑器配置为使用 unix 样式的行尾吗?
-
我试过了#! /usr/bin/env python #,没有运气。我不想配置编辑器,因为我希望 shebang 的工作能够通过一个自动过程来保证,该过程可以防止微不足道的人为错误。
-
@MarkRansom shebangs 由操作系统而不是 shell 处理——这就是为什么可以使用
execve()系统调用直接调用脚本(shell 和其他)的原因。