Mit*_*ops 9 python linux command-line
我在我的python脚本的顶部有规范的shebang.
#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
但是,我仍然经常想在运行脚本时将无缓冲的输出导出到日志文件中,所以我最终调用:
$ python -u myscript.py &> myscript.out &
Run Code Online (Sandbox Code Playgroud)
我可以像这样在shebang中嵌入-u选项吗?
#!/usr/bin/env python -u
Run Code Online (Sandbox Code Playgroud)
并且只打电话:
$ ./myscript.py &> myscript.out &
Run Code Online (Sandbox Code Playgroud)
......仍然没有缓解?我怀疑这不起作用,并希望在尝试之前检查.有什么东西可以实现这一目标吗?
Bar*_*mar 12
你可以在shebang行上有参数,但大多数操作系统对参数的数量有一个非常小的限制.POSIX只需要支持一个参数,这很常见,包括Linux.
由于您正在使用该/usr/bin/env
命令,因此您已经使用了该参数python
,因此无法添加其他参数-u
.如果你想使用python -u
,你需要硬编码绝对路径python
而不是使用/usr/bin/env
,例如
#!/usr/bin/python -u
Run Code Online (Sandbox Code Playgroud)
看到这个相关的问题:如何使用shebang多个参数(即#!)?
自 coreutils 8.30 以来的新版本中,env
有-S
此选项。引用自man env
:
\n\nRun Code Online (Sandbox Code Playgroud)\nThe -S option allows specifing multiple parameters in a script. Running a script named 1.pl containing the follow\xe2\x80\x90\n ing first line:\n\n #!/usr/bin/env -S perl -w -T\n\n Will execute perl -w -T 1.pl .\n\n Without the '-S' parameter the script will likely fail with:\n\n /usr/bin/env: 'perl -w -T': No such file or directory\n
归档时间: |
|
查看次数: |
2837 次 |
最近记录: |