Git   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Linux脚本中是什么意思? #!/ usr / bin / python -tt大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我知道在.sh bash脚本的开头是

#!/bin/bash

它指向的命令interPeter可执行@L_607_0@。

但在观看Google Python课程http://www.youtube.com/watch?v=tKTZoB2Vjuk期间,我注意到他们使用python

#!/usr/bin/python -tt

。 浏览互联网我也发现了这种符号的风格:

Ipython解释器变慢(Anaconda,Windows)

Linux ELF 32位加载

/ usr / bin / perl:错误的解释器:文本@L_607_0@忙

C / C ++dynamic加载未知原型的函数

从脚本内部确定解释器

#!/usr/local/bin/python

乃至

#!/usr/bin/env python

所以,我是Python新手,我是普通的Linux用户,我对这个“魔术”系列有几个问题:

首先,这条线的正确forms是什么? 为什么?

在/!/ usr / bin / python -tt中-tt键是什么意思?

什么程序在Linux中parsing这一行?

对于任何脚本,这条线的语法是什么?

为什么这条线是如此有必要,如果每个@L_607_0@都有它的扩展名?

那么在每个计算机解释器中,对于某种脚本,将存储在不同的地方而不是另一个? 脚本无法运行。

对我来说真的很有意思 这条线是什么? 为什么这一行? 如何写这行? 为什么这样呢?…

在Windows中无法更改Python解释器

python解释器中的“input”键的替代?

我可以从Windows命令行使用哪个Perl?

我如何在C中实现我自己的基本unix sHell?

安装cint解释器时,运行./configure将返回语法错误

问题#1)该行被称为shebang,没有正确的形式,普遍适用。 例如

#!python #!/usr/bin/python #!/usr/local/bin/python #!/usr/bin/python -t

都是有效/可接受的形式,但可能不适用于所有系统:

#!python只有在python可执行@L_607_0@在你的sHell的PATH中的某个地方才能工作

#!/usr/bin/python只有在python二进制@L_607_0@实际位于/ usr / bin时才有效

#!/usr/local/bin/python也只有在python位于/ usr / local / bin时才有效

问题2)

#!/usr/bin/python -tt将-tt选项传递给python,就好像你已经完成了一样:

$ python -t somescript.py

在sHell提示符下。 您可以将任意的命令行参数传递给shebang行上的解释器。

问题#3)

该行由OS内核和您当前使用的sHell解释。 #!后的东西#! 只是简单地告诉操作系统应该启动哪个程序来“执行”脚本的其余部分。

问题#4)

脚本语法取决于您使用的语言。 例如,一个PHP sHell脚本必须采取的形式

#!/usr/bin/PHP <?PHP ... PHP code here ...

一个#!/usr/bin/perl perl脚本必须使用Perl语法,等等…如果你把PHP代码放在Perl中,你只需要Perl脚本语法错误,因为PHP代码不是 perl码

问题#5)

Shebangs适用于Unix系统,@L_607_0@扩展名从来没有真正用于识别操作系统的@L_607_0@类型。 一个.c@L_607_0@被理解为一个C语言源代码@L_607_0@,但这只是一个约定。 你可以把一个Bash脚本放到一个.c@L_607_0@中,使其成为可执行@L_607_0@,并且使用#!/bin/bash将它作为Bash脚本执行。

通过@L_607_0@扩展名确定可执行@L_607_0@类型更多的是Windows操作系统。

问题#6)

这就回到了第一个问题 – 如果shebang声称解释器在某个其他路径而不是它所在的位置,那么这个特定的脚本不能被执行,直到shebang被修正,或者解释器被移动。 Shebangs非常方便,但不是绝对可靠的。

谢天谢地,现在大多数解释器都安装在相当标准的位置,所以找到(比如说)安装在/some/wonky/weird/path而不是/usr/bin

从手册:

-t当一个源@L_607_0@混合制表符和空格进行缩进时,会发出警告,使其取决于空格中的制表符值。 当选项给出两次时发出一个错误

该行的正确形式是您想要使用的形式。

这是解释者,读这行称为shebang 。 如果你用第一行写一个“#!/ usr / bin / python”的python脚本,用bash调用它,它是/ bin / sh解释器,它读取第一行并启动正确的解释器。

这是一个shebang。 特征语法由字符序列#!,即数字符号和感叹号字符组成

@L_607_0@扩展名在Linux中通常不相关。 您可以有一个没有.py扩展名的python脚本。

例如。

shadyabhi@archlinux ~ $ cat a print "Hello World" shadyabhi@archlinux ~ $ python2 a Hello World shadyabhi@archlinux ~ $

如果你想使用$。/ script来启动一个脚本,那么就只需要这个shebang,因为在这种情况下,你没有提到你想要使用的解释器。

#!/ usr / bin / env python

发出关于不一致的选项卡使用的错误

核心

#!/ path_to_the_interpreter或/ usr / bin / env

* nix根本不检查extensinon(除了一些DE可以这样做)

这就是为什么你应该使用#!/ usr / bin / env

更多信息在维基

不同的路径是安装python解释器的地方。 不同风格的Linux将它安装在不同的地方。

Linux不关心Windows的扩展。

bash会话使用该行为正在运行的脚本调用正确的解释器。

@L_607_0@存储,调用和使用的不同位置都基于@L_607_0@应该定义的位置,并由软件定位。 设备的开发,用户存储区域的回家,程序的回收站。 但随着时间的推移,不同的系统需要不同的地点。

我会建议拿一本关于Linux / Unix的书,并学习@L_607_0@系统的基础知识。 这确实有帮助。

这被称为shebang。 它告诉系统它应该将@L_607_0@作为参数传递给指定的程序,而不是试图执行它本身。

首先,这条线的正确形式是什么? 为什么?

正确的路径是你的Python解释器安装在哪里。 参数( -tt )将取决于你想要的。 有些人坚持使用#!/usr/bin/env ,以防解释器恰好在这个地方。

在/!/ usr / bin / python -tt中-tt键是什么意思?

我不使用Python,所以别人将不得不回答这个问题。

当我在Linux中启动任何脚本(不是精确的Python脚本)时,程序解析并使用此行? 我认为这不是bash,因为即使是bash脚本也需要这一行。

我听说(而且非常确定)这是内核。 即使是bash,也需要用行来告诉bash,它应该是一个应该解释的脚本,而不是传递给另一个程序。 /usr/bin/env是一个搜索指定参数的PATH命令,并通过它找到的程序传递脚本。

这个行对于任何脚本的语法是什么? 干什么解析它的名字?

语法与命令行#!command arguments ,但command必须是绝对路径, PATH不会被搜索

为什么这条线是如此有必要,如果每个@L_607_0@都有它的扩展名?

扩展在* nix中没有任何意义。 我可以命名一个bash脚本script.pl , script.exe ,甚至没有扩展名的script 。 如果脚本具有正确的shebang行,则它将通过正确的解释器传递,否则内核会尝试将其作为可执行@L_607_0@执行并失败。 系统不知道扩展名。 对于用户来说,这只是一个惯例

那么在每个计算机解释器中,对于某种脚本,将存储在不同的地方而不是另一个? 脚本无法运行。

如果我正确地理解了这一点,那么你是说不同的系统/发行版将解释器保存在不同的地方(例如/usr/bin/python和/usr/local/bin/python ),并询问系统如何知道使用哪个?


答案是,它使用的是你给它的绝对路径。 这实际上是可执行脚本的一个小问题,为什么/usr/bin/env已经流行起来。 正如我所说的, env在PATH搜索正确的解释器,所以只要你的系统有一个/usr/bin/env ,你就设置好了,你不需要查找或者保证解释器的位置。

大佬总结

以上是大佬教程为你收集整理的在Linux脚本中是什么意思? #!/ usr / bin / python -tt全部内容,希望文章能够帮你解决在Linux脚本中是什么意思? #!/ usr / bin / python -tt所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: