亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么需要在腳本文件的開頭放置#!/ bin / bash?

為什么需要在腳本文件的開頭放置#!/ bin / bash?

30秒到達戰場 2019-11-21 10:56:01
我之前已經制作過Bash腳本,并且一開始它們都運行良好。放入它有什么意義?事情會有所不同嗎?另外,您如何發音#?我知道這!發音為“砰”。怎么#!發音?
查看完整描述

3 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

這是一個約定,因此* nix shell知道要運行哪種解釋器。


例如,ATT的較舊版本默認為sh(Bourne shell),而BSD的較舊版本默認為csh(C shell)。


即使在今天(大多數系統都運行bash,即“ Bourne Again Shell”),腳本仍可以使用bash,python,perl,ruby,PHP等。例如,您可能會看到#!/bin/perl或#!/bin/perl5。


PS:感嘆號(!)親切地稱為“ bang”。shell注釋符號(#)有時稱為“ hash”。


PPS:請記住-在* nix下,將后綴與文件類型相關聯只是一種約定,而不是“規則”。一個可執行文件可以是一個二進制程序,一百萬腳本類型和其他的東西,以及任何一個。因此需要#!/bin/bash。


查看完整回答
反對 回復 2019-11-21
?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

更準確地說,shebang #!是可執行文件(x 模式文件)的前兩個字節,由execve(2)系統調用(執行程序)解釋。但是POSIX規范execve沒有提及shebang。


它必須后跟解釋器可執行文件的文件路徑(BTW甚至可以是相對的,但大多數情況下是絕對的)。


在用戶中找到解釋器(例如)的一個不錯的技巧(也許不是那么好)是使用程序(始終在所有Linux上),例如python$PATHenv/usr/bin/env


 #!/usr/bin/env python

任何ELF可執行文件都可以是解釋器。您甚至可以使用,#!/bin/cat或者#!/bin/true如果您愿意?。ǖ@通常是無用的)


查看完整回答
反對 回復 2019-11-21
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

叫做舍邦。在unix-speak中,#稱為Sharp(如音樂中的)或hash(如twitter上的標簽),而!叫做爆炸。(您實際上可以使用!!來引用以前的shell命令,稱為bang-bang)。因此,當放在一起時,您會得到haSH-BANG或shebang。


#之后的部分!告訴Unix使用什么程序來運行它。如果未指定,它將嘗試使用bash(或sh,zsh或任何$ SHELL變量),但如果存在,它將使用該程序。另外,#是大多數語言的注釋,因此該行在后續執行中將被忽略。


查看完整回答
反對 回復 2019-11-21
  • 3 回答
  • 0 關注
  • 1335 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號