Kada je bolje koristiti #! / Bin / bash Umjesto #! / Bin / sh u shematskoj skripti?

Sadržaj:

Kada je bolje koristiti #! / Bin / bash Umjesto #! / Bin / sh u shematskoj skripti?
Kada je bolje koristiti #! / Bin / bash Umjesto #! / Bin / sh u shematskoj skripti?

Video: Kada je bolje koristiti #! / Bin / bash Umjesto #! / Bin / sh u shematskoj skripti?

Video: Kada je bolje koristiti #! / Bin / bash Umjesto #! / Bin / sh u shematskoj skripti?
Video: Section 1: Less Comfortable - YouTube 2024, Svibanj
Anonim
Kada stvarate novu skriptu ljuske, želite biti sigurni da je problem što je više moguće problematičan, ali ponekad može biti pomalo zbunjujuće da biste znali koji je najbolji način za korištenje. Na toj napomenici, današnji SuperUser Q & A post ima odgovor na pitanje zbunjenog čitatelja.
Kada stvarate novu skriptu ljuske, želite biti sigurni da je problem što je više moguće problematičan, ali ponekad može biti pomalo zbunjujuće da biste znali koji je najbolji način za korištenje. Na toj napomenici, današnji SuperUser Q & A post ima odgovor na pitanje zbunjenog čitatelja.

Današnja pitanja i odgovori nam se javljaju zahvaljujući SuperUseru - podjele Stack Exchange-a, zajednice-driven grupiranja Q & A web stranica.

Pitanje

Čitač SuperUser Hendre želi znati kada je bolje koristiti #! / Bin / bash umjesto #! / Bin / sh u skriptama ljuske:

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

Kada je bolje koristiti #! / Bin / bash umjesto #! / Bin / sh u skriptu ljuske?

Odgovor

Odgovor za nas je odgovoran za SuperUser suradnik:

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 bashisms 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.

Imate li nešto za objašnjenje? Zvuči u komentarima. Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.

Slikovni kredit: Wikipedia

Preporučeni: