什麼時候使用ා更好!/bin/bash而不是ා!/shell指令碼中的bin/sh?

當您建立一個新的shell指令碼時,您希望確保它儘可能沒有問題,但是有時知道哪個shebang最適合您使用會有點混亂。在這一點上,今天的超級使用者問答帖子回答了一個困惑讀者的問題。...

什麼時候使用ා更好!/bin/bash而不是ා!/shell指令碼中的bin/sh?

當您建立一個新的shell指令碼時,您希望確保它儘可能沒有問題,但是有時知道哪個shebang最適合您使用會有點混亂。在這一點上,今天的超級使用者問答帖子回答了一個困惑讀者的問題。

今天的問答環節是由SuperUser提供的,SuperUser是Stack Exchange的一個分支,是一個由社群驅動的問答網站分組。

問題

超級使用者讀者Hendre想知道什麼時候最好使用#!/bin/bash而不是#!/shell指令碼中的bin/sh:

When is it more appropriate to use #!/bin/bash rather than #!/bin/sh in a shell script?

什麼時候最好用#!/bin/bash而不是#!/shell指令碼中的bin/sh?

答案

超級使用者貢獻者grawity為我們提供了答案:

In short:

  • There are several shells which implement a superset of the POSIX sh specification. On different systems, /bin/sh might be a link to ash, bash, dash, ksh, zsh, etc. It will always be sh-compatible though, never csh or fish.
  • As long as you stick to sh features only, you can (and probably even should) use #!/bin/sh and the script should work fine, no matter which shell it is.
  • If you start using bash-specific features (i.e. arrays), you should specifically request bash because, even if /bin/sh already invokes bash on your system, it might not on everyone else’s system, and your script will not run there. The same applies to zsh and ksh, of course.
  • Even if the script is for personal use only, you might notice that some operating systems change /bin/sh during upgrades. For example, on Debian it used to be bash, but was later replaced with the very minimal dash. Scripts which used bashi**s but had #!/bin/sh suddenly broke.

However:

  • Even #!/bin/bash is not that correct. On different systems, bash might live in /usr/bin, /usr/pkg/bin, or /usr/local/bin.
  • A more reliable option is #!/usr/bin/env bash, which uses $PATH. Although the env tool itself is not strictly guaranteed either, /usr/bin/env still works on more systems than /bin/bash does.

有什麼要補充的解釋嗎?在評論中發出聲音。想從其他精通技術的Stack Exchange使用者那裡瞭解更多答案嗎?在這裡檢視完整的討論主題。

圖片來源:維基百科

  • 發表於 2021-04-08 22:29
  • 閱讀 ( 35 )
  • 分類:網際網路

你可能感興趣的文章

使用簡單的shell指令碼修復html格式

... 為什麼使用shell指令碼?如果你是程式設計新手,從小事做起會更好。不僅你不太可能放棄,而且你還有機會停下來學習。也就是說,你的第一個程式可以非常有用,即使它...

  • 發佈於 2021-03-13 00:12
  • 閲讀 ( 50 )

什麼是shell指令碼,為什麼要使用它

... 既然您已經知道了shell指令碼是什麼以及它們的許多優點,您不想在任務中使用它們嗎?您在使用它們時遇到了哪些問題?請在下面的評論中告訴我們。 ...

  • 發佈於 2021-03-13 04:53
  • 閲讀 ( 56 )

如何定製mac終端並使其更有用

...可以繼續使用當前shell,但在需要執行特定任務集的任何時候都可以開啟組。 ...

  • 發佈於 2021-03-21 20:13
  • 閲讀 ( 50 )

在vba中理解excel單元格與range函式

... 那麼為什麼不在同一個指令碼中觸發獎金列的計算呢? ...

  • 發佈於 2021-03-25 12:55
  • 閲讀 ( 53 )

如何使用受限shell來限制linux使用者可以做什麼

受限的shell限制了使用者帳戶在Linux上可以做什麼。受限使用者不能更改其目錄,您可以控制他們可以訪問哪些命令。下面介紹如何在Linux上設定受限shell。 受限炮彈 受限shell不是另一個shell。這是標準外殼的另一種模式。Bash...

  • 發佈於 2021-03-31 10:57
  • 閲讀 ( 58 )

如何使用chsh在linux上更改預設shell

...用chsh命令將其設定為預設shell。我們會教你怎麼做。 為什麼貝殼很重要 shell位於您和作業系統之間。它在終端視窗內提供環境,允許您鍵入命令和執行程式。shell檢查您的輸入並找出您想要的內容。如果它能執行你的出價本身...

  • 發佈於 2021-04-02 06:04
  • 閲讀 ( 68 )

如何在linux上的bash中設定環境變數

...硬體終端的模擬。它包含將被模擬的硬體終端的型別。 使用者:當前使用系統的使用者的使用者名稱。 PWD:當前工作目錄的路徑。 OLDPWD:移動到當前工作目錄之前所處的目錄。 LS\u顏色:LS使用的顏色程式碼列表突出顯示不同...

  • 發佈於 2021-04-02 06:44
  • 閲讀 ( 59 )

linux下如何使用rclone備份google驅動

...將提示您輸入名稱。我們稱之為“谷歌硬碟”,隨便你叫什麼名字都行。 長選單允許您選擇要建立遠端連線的儲存型別。 滾動列表,直到看到Google Drive的條目,並記下其編號。 我們可以看到,在這個例子中,它是13號。輸入...

  • 發佈於 2021-04-02 18:51
  • 閲讀 ( 51 )

如何在macos catalina上將預設shell更改為bash

有了macOS Catalina,蘋果現在使用Zsh作為預設shell。我們喜歡Zsh,但是macOS中仍然包含可靠的老Bash shell,如果您願意,可以快速切換回Bash。 Zsh只是新建立的使用者帳戶上的預設shell,因此在升級的Mac上的任何現有帳戶在預設情況下...

  • 發佈於 2021-04-03 01:32
  • 閲讀 ( 54 )

如何在bash中使用變數

...令列引數。它們向命令提供資訊,以便它知道您希望它做什麼。如果希望ls在主目錄上工作並顯示隱藏檔案,可以使用以下命令,其中tilde~和-a(all)選項是命令列引數: ls ~ -a 我們的指令碼可以接受命令列引數。第一個引數引...

  • 發佈於 2021-04-03 02:34
  • 閲讀 ( 61 )
eitw8265
eitw8265

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦