Khi nào thì tốt hơn nên sử dụng #! / Bin / bash Thay vì #! / Bin / sh trong Tập lệnh Shell?

Mục lục:

Khi nào thì tốt hơn nên sử dụng #! / Bin / bash Thay vì #! / Bin / sh trong Tập lệnh Shell?
Khi nào thì tốt hơn nên sử dụng #! / Bin / bash Thay vì #! / Bin / sh trong Tập lệnh Shell?

Video: Khi nào thì tốt hơn nên sử dụng #! / Bin / bash Thay vì #! / Bin / sh trong Tập lệnh Shell?

Video: Khi nào thì tốt hơn nên sử dụng #! / Bin / bash Thay vì #! / Bin / sh trong Tập lệnh Shell?
Video: COMMANDLINE ĐỂ LÀM GÌ - MỘT VÀI LỆNH CMD CƠ BẢN! - YouTube 2024, Có thể
Anonim
Khi bạn đang tạo một kịch bản shell mới, bạn muốn chắc chắn rằng nó là vấn đề miễn phí nhất có thể, nhưng đôi khi nó có thể hơi khó hiểu khi biết shebang nào là tốt nhất cho bạn sử dụng. Trên ghi chú đó, bài đăng Hỏi & Đáp của người dùng siêu nhân hôm nay có câu trả lời cho câu hỏi của người đọc bị nhầm lẫn.
Khi bạn đang tạo một kịch bản shell mới, bạn muốn chắc chắn rằng nó là vấn đề miễn phí nhất có thể, nhưng đôi khi nó có thể hơi khó hiểu khi biết shebang nào là tốt nhất cho bạn sử dụng. Trên ghi chú đó, bài đăng Hỏi & Đáp của người dùng siêu nhân hôm nay có câu trả lời cho câu hỏi của người đọc bị nhầm lẫn.

Phiên Hỏi & Đáp hôm nay đến với chúng tôi theo lịch sự của SuperUser - một phân khu của Stack Exchange, một nhóm các trang web Hỏi & Đáp do cộng đồng điều hành.

Câu hỏi

Người đọc SuperUser Hendre muốn biết khi nào tốt hơn nên sử dụng #! / bin / bash thay vì #! / bin / sh trong kịch bản shell:

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

Khi nào thì tốt hơn nên sử dụng #! / bin / bash thay vì #! / bin / sh trong một kịch bản shell?

Câu trả lời

Siêu người đóng góp grawity có câu trả lời cho chúng tôi:

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.

Có cái gì để thêm vào lời giải thích? Tắt âm thanh trong các ý kiến. Bạn muốn đọc thêm câu trả lời từ những người dùng Stack Exchange có hiểu biết công nghệ khác? Xem toàn bộ chuỗi thảo luận tại đây.

Tín dụng hình ảnh: Wikipedia

Đề xuất: