tôi sử dụng Bash như vỏ đăng nhập của tôi, nhưng đối với kịch bản tôi muốn chọn Bourne shell bất kỳ ngày nào trong tuần và hai lần vào ngày Chủ nhật. Bash có các tính năng tốt hơn, thân thiện với người dùng tốt hơn và các lỗi tốt hơn.
Thực ra, những thứ tương tự khiến tôi chọn Bash khi tôi đăng nhập, làm cho tôi tránh được khi viết kịch bản. Bash cố gắng làm mọi thứ tốt đẹp và ấm cúng cho người dùng, nhưng với chi phí 776 kB thực thi (trên máy của tôi), so với 140 kB đối với Bourne shell. Tại sao kịch bản của tôi quan tâm đến sự thân thiện với người dùng? Bất kỳ đạt được tôi có thể đạt được thông qua việc sử dụng một số chức năng Bash thông minh có hiệu quả bị hủy bỏ bởi dấu chân vỏ, đó là lớn hơn năm lần.
Tôi có máy tính chạy Linux, FreeBSD và OS X. Mặc dù tôi hiếm khi di chuyển bất kỳ thứ gì giữa các máy tính, nhưng thật tuyệt khi có khả năng. Trong tập lệnh hệ vỏ Bourne, bạn chỉ cần nhập
#!/bin/sh
và nó chỉ hoạt động. Luôn luôn. Bash có thể là phổ biến trên Linux, nhưng nó không được chuẩn hóa như vỏ Bourne. Trên FreeBSD, Bash không được cài đặt theo mặc định. Nó có thể được cài đặt từ Ports nếu sysadmin nghĩ rằng đó là một ý tưởng tốt nhưng, ngay cả sau đó, nó kết thúc trong /usr/local/bin/bash (không phải /bin/bash). Do đó, nếu bạn vẫn quyết định đi cùng Bash, bạn nên viết
#!/usr/bin/env bash
để tạo tập lệnh di động. env
sẽ tìm thấy trình bao cho bạn, bất kể hương vị Unix của bạn (miễn là nó được cài đặt).
Vào cuối ngày, đó là lựa chọn của bạn. Chỉ cần đảm bảo rằng tập lệnh của bạn thực sự tuân thủ tuân thủ đối với trình bao mà bạn chọn và không dựa vào "sh" đang được liên kết tượng trưng thành "bash" hoặc tương tự.
Nguồn
2012-02-25 21:55:15
chỉ miễn là không phải là csh –
[Lập trình Csh được coi là có hại] (http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/) –
Mã lập trình thực sự ở Korn! :-P Tôi luôn thích sh so với bash, vì hầu hết các công cụ cú pháp/tính năng sẽ giống nhau hoặc ít nhất là tương thích với hành vi sh trong hầu hết các bản phân phối; trong khi bash chỉ không có sẵn trong một số trường hợp nếu bạn làm việc với AIX vv Nhưng nếu bạn đang làm việc với các kịch bản chỉ có Linux, bash là thích hợp hơn. Làm cho một imho lập trình dễ dàng hơn rất nhiều. –