1
ysc3839 2021-11-19 18:27:07 +08:00 10
|
2
gam2046 2021-11-19 18:27:25 +08:00 1
|
3
CokeMine 2021-11-19 18:27:54 +08:00 via Android 1
你加了 Python 的 Shebang 所以直接执行这个脚本就默认调用了 Python 的解释器。
但是如果你去掉 Shebang 或者不给这个脚本可执行权限。应该直接执行就跑不动了 我觉得你出现这样结果的原因是因为 前者能运行是因为 Python 解释器对于两种换行符都能运行。但是因为换行符问题后者对 Linux 来说不是一个合法的脚本。自然也找不到对应的解释器去解释他 |
4
ch2 2021-11-19 18:29:22 +08:00 2
命令里声明用 python3 ,肯定没问题
不指定用哪个解释器,shell 会去第一行读你钦定的 bin 结果读到了一个叫 python3\r 的玩意 shell 想请教你:它在 /usr/bin/env 里没找到 python3\r ,现在该干啥? 第二次,你把\r 去掉后,shell 找到了 /usr/bin/env/python3 ,就让它去跑这个脚本了 |
5
ysc3839 2021-11-19 19:07:41 +08:00 2
@gam2046 @ch2
Shebang 不是 shell 解析的,而是内核解析的。 比如 Linux 是在 binfmt_script.c 里解析的: https://github.com/torvalds/linux/blob/v5.15/fs/binfmt_script.c |
7
canwushuang 2021-11-20 09:52:13 +08:00
linux 中,脚本文件第一行当作运行环境申明。shell bash python node 等等都如此。
|
8
canwushuang 2021-11-20 09:55:31 +08:00
windows 中,最早引入了文件扩展名,后缀名,此后根据不同后缀查询不同的环境设置并运行。
|
9
windvans 2021-11-20 17:46:18 +08:00
要看第一行#!后面指定的解释器啊
|
10
shm7 2021-11-21 18:03:28 +08:00
2 3 4 楼就是一眼能猜到的原因了,python 命令路径错误指定了,windows 和 linux 下路径不一样。
|