de-vraag
  • Domanda
  • Tags
  • Utenti
Notifiche
Ricompense
Registrazione
Una volta registrati, sarete informati delle risposte e dei commenti alle vostre domande.
Entrare
Se hai già un account, accedi per controllare le nuove notifiche.
Ci saranno ricompense per le domande, le risposte e i commenti aggiunti.
Altro
Fonte
Modifica
Weiwei Yang
Weiwei Yang
Question

Differenza tra sh e bash

Quando scriviamo programmi di shell, spesso usiamo /bin/sh e /bin/bash. Io di solito uso bash, ma non so quale sia la differenza tra loro.

Qual è la differenza principale tra bash e sh?

Di cosa dobbiamo essere consapevoli quando programmiamo in bash e sh?

1182 2011-04-20T03:33:16+00:00 3
Jianxin Gao
Jianxin Gao
Domanda modificata 19º agosto 2016 в 1:45
Programmazione
shell
unix
bash
sh
Popular videos
BASH: Introduzione allo scripting (M3-E01)
BASH: Introduzione allo scripting (M3-E01)
2 anni fa
Trash bash Fleet
Trash bash Fleet
2 anni fa
TUTTO QUESTO MI SEMBRA UN GOMBLOTTO 🤔🤔 [feat Tina Cipollari] GAMING TRASH BASH #3 ⚽🎮👾🎲
TUTTO QUESTO MI SEMBRA UN GOMBLOTTO 🤔🤔 [feat Tina Cipollari] GAMING TRASH BASH #3 ⚽🎮👾🎲
5 anni fa
Script Bash - Creare COMANDI per terminale PERSONALIZZATI! - Ep. 01
Script Bash - Creare COMANDI per terminale PERSONALIZZATI! - Ep. 01
1 anno fa
Composing with Children, PD session w/John Bertles of Bash the Trash
Composing with Children, PD session w/John Bertles of Bash the Trash
9 anni fa
Keep Irving Beautiful's Trash Bash 2016
Keep Irving Beautiful's Trash Bash 2016
5 anni fa
2018 TEEA Civic/Community Winner: River, Lakes, Bays ‘N Bayous Trash Bash
2018 TEEA Civic/Community Winner: River, Lakes, Bays ‘N Bayous Trash Bash
4 anni fa
Sono solo persone FALZE!!! GAMING TRASH BASH #5
Sono solo persone FALZE!!! GAMING TRASH BASH #5
5 anni fa
Redlands Girl Treated to ‘Trash Bash’ for Birthday | NBCLA
Redlands Girl Treated to ‘Trash Bash’ for Birthday | NBCLA
2 anni fa
Nash Trash AMX Atco Halloween Bash 2020
Nash Trash AMX Atco Halloween Bash 2020
1 anno fa
Giochiamo alla grande! GAMING TRASH BASH #6
Giochiamo alla grande! GAMING TRASH BASH #6
5 anni fa
Keep Irving Beautiful Trash Bash 2018
Keep Irving Beautiful Trash Bash 2018
3 anni fa
SpongeBob SquarePants: Friend or Foe - TRASH BASH! (Nickelodeon Games)
SpongeBob SquarePants: Friend or Foe - TRASH BASH! (Nickelodeon Games)
5 anni fa
The Overcoat, from Bash the Trash's "Sustainable Storytelling"
The Overcoat, from Bash the Trash's "Sustainable Storytelling"
12 anni fa
Keep Irving Beautiful Trash Bash 2021
Keep Irving Beautiful Trash Bash 2021
10 mesi fa
« Precedente
Successivo »
Questa domanda ha 1 rispondere in inglese, per leggerle accedi al tuo account.
Roman Cheplyaka
Roman Cheplyaka
20º aprile 2011 в 4:10
2011-04-20T04:10:59+00:00
Altro
Fonte
Modifica
#12344133

Che cos'è sh

sh (o il linguaggio dei comandi della Shell) è un linguaggio di programmazione descritto dallo standard POSIX standard. Ha molte implementazioni (ksh88, dash, ...). Anche bash può essere considerata un'implementazione di sh (vedi sotto).

Poiché sh è una specifica, non un'implementazione, /bin/sh è un symlink (o un hard link) ad un'implementazione reale sulla maggior parte dei sistemi POSIX.

Cos'è bash?

bash ha iniziato come un'implementazione compatibile con sh (anche se precede lo standard POSIX di qualche anno), ma col passare del tempo ha acquisito molte estensioni. Molte di queste estensioni possono cambiare il comportamento degli script di shell POSIX validi, quindi di per sé bash non è una shell POSIX valida. Piuttosto, è un dialetto del linguaggio shell POSIX.

bash supporta uno switch --posix, che lo rende più conforme a POSIX. Cerca anche di imitare POSIX se invocato come sh.

sh = bash?

Per molto tempo, /bin/sh puntava a /bin/bash sulla maggior parte dei sistemi GNU/Linux. Di conseguenza, era quasi diventato sicuro ignorare la differenza tra i due. Ma questo ha iniziato a cambiare di recente.

Alcuni esempi popolari di sistemi dove /bin/sh non punta a /bin/bash (e su alcuni dei quali /bin/bash potrebbe anche non esistere) sono:

  1. I moderni sistemi Debian e Ubuntu, che per impostazione predefinita collegano simbolicamente sh a dash;
  2. Busybox, che di solito viene eseguito durante l'avvio del sistema Linux come parte di initramfs. Utilizza l'implementazione della shell ash.
  3. BSD, e in generale qualsiasi sistema non-Linux. OpenBSD usa pdksh, un discendente della shell Korn. FreeBSD's sh è un discendente dell'originale shell Bourne di UNIX. Solaris ha la propria sh che per molto tempo non è stata conforme a POSIX; un'implementazione libera è disponibile dal progetto Heirloom.

Come potete scoprire a cosa punta /bin/sh sul vostro sistema?

La complicazione è che /bin/sh potrebbe essere un link simbolico o un hard link. Se è un link simbolico, un modo portatile per risolverlo è:

% file -h /bin/sh
/bin/sh: symbolic link to bash

Se si tratta di un collegamento fisso, provate

% find -L /bin -samefile /bin/sh
/bin/sh
/bin/bash

Infatti, il flag -L copre sia i symlink che gli hardlink, ma lo svantaggio di questo metodo è che non è portabile - POSIX non richiede find di supportare l'opzione -samefile, sebbene sia GNU find che FreeBSD find la supportino.

Linea Shebang

In definitiva, sta a voi decidere quale usare, scrivendo la linea «shebang».

Es.

#!/bin/sh

userà sh (e tutto ciò a cui punta),

#!/bin/bash

userà /bin/bash se è disponibile (e fallirà con un messaggio di errore se non lo è). Naturalmente, si può anche specificare un'altra implementazione, ad esempio

#!/bin/dash

quale usare.

Per i miei script, preferisco sh per le seguenti ragioni:

  • è standardizzato
  • è molto più semplice e facile da imparare
  • è portabile su tutti i sistemi POSIX - anche se non hanno bash, sono obbligati ad avere sh.

Ci sono anche vantaggi nell'usare bash. Le sue caratteristiche rendono la programmazione più conveniente e simile a quella di altri linguaggi di programmazione moderni. Queste includono cose come le variabili locali con scopo e gli array. Il semplice sh è un linguaggio di programmazione molto minimalista.

Roman Cheplyaka
Roman Cheplyaka
Risposta modificata 20º aprile 2017 в 7:53
1038
0
Rein Henrichs
Rein Henrichs
20º aprile 2011 в 3:43
2011-04-20T03:43:57+00:00
Altro
Fonte
Modifica
#12344132

sh: http://man.cx/sh bash: http://man.cx/bash

TL;DR: bash è un superset di sh con una sintassi più elegante e più funzionalità. E' sicuro usare una linea shebang di bash in quasi tutti i casi in quanto è abbastanza onnipresente sulle piattaforme moderne.

NB: in alcuni ambienti, sh è bash. Controlla sh --versione.

 haccks
haccks
Risposta modificata 9º marzo 2018 в 2:00
124
0
 Premraj
Premraj
9º febbraio 2015 в 9:46
2015-02-09T09:46:58+00:00
Altro
Fonte
Modifica
#12344134

La Shell è un'interfaccia tra un utente e il sistema operativo per accedere ai servizi di un sistema operativo. Può essere sia GUI che CLI (Command Line interface).

sh (Bourne shell) è un interprete di shell a riga di comando, per sistemi operativi Unix/Unix-like. Fornisce alcuni comandi integrati. Nel linguaggio di scripting si indica l'interprete come #!/bin/sh. Era quella più ampiamente supportata da altre shell come bash (libera/aperta), kash (non libera).

Bash (Bourne again shell) è un sostituto della shell Bourne. Bash è un superset di sh. Bash supporta sh. POSIX è un insieme di standard che definiscono come dovrebbero funzionare i sistemi conformi a POSIX. Bash non è in realtà una shell conforme a POSIX. In un linguaggio di scripting si indica l'interprete come #!/bin/bash.

Analogia:

  • La shell è come un'interfaccia o specifiche o API.
  • sh è una classe che implementa l'interfaccia Shell.
  • Bash è una sottoclasse della sh.

inserire qui la descrizione dell'immagine

 Premraj
Premraj
Risposta modificata 6º settembre 2018 в 2:04
41
0
Comunità collegate 1
Bash
Bash
200 utenti
Qui si parla di bash Se avete domande non inerenti allo scopo del gruppo, potete provare a cercare quello giusto seguendo il link @librenetwork altro network @flamesnetwork
Aprire telegram
Aggiungi domanda
Categorie
Tutti
Tecnologia
Cultura / Tempo Libero
Vita / Arte
Scienza
Professionista
Business
Utenti
Tutti
Nuovo
Popolare
1
Roxana Elizabeth CASTILLO Avalos
Registrato 22 ore fa
2
Hideo Nakagawa
Registrato 1 giorno fa
3
Sergiy Tytarenko
Registrato 3 giorni fa
4
shoxrux azadov
Registrato 5 giorni fa
5
Koreets Koreytsev
Registrato 1 settimana fa
BG
DE
EL
ES
FR
ID
IT
JA
KO
NL
PT
RU
TR
ZH
© de-vraag 2022
Fonte
stackoverflow.com
sotto licenza cc by-sa 3.0 con attribuzione