Đối với người mới bắt đầu, nếu bạn có thể đưa ra giả định rằng Bash được cài đặt sẵn (theo hiểu biết của tôi là trường hợp trên tất cả các hệ thống bạn liệt kê), hãy sử dụng hàm băm sau để tương thích:
#!/usr/bin/env bash
cái này gọi bất cứ điều gì bash
xảy ra để được cấu hình, bất kể nó ở trong /bin
hay /usr/local/bin
.
Trong khi trên hầu hết các hệ thống trên một phạm vi rộng (bao gồm AIX, Solaris, một số hương vị BSD), bash
kết thúc ở các địa điểm khác nhau, env
luôn luôn kết thúc ở đó /usr/bin/env
. Tuy nhiên, mánh khóe không phải của tôi mà là của tác giả cuốn sách Bash Cookbook.
Dù sao, vâng, Bash sẽ cho phép bạn sử dụng một số tính năng "hiện đại" giúp cuộc sống của bạn dễ dàng hơn.
Ví dụ: dấu ngoặc kép:
[[ -f "/etc/debian_version" ]] && echo "This is a Debian flavor"
trong khi theo phương ngữ vỏ truyền thống, bạn phải dùng đến:
test -f "/etc/debian_version" && echo "This is a Debian flavor"
nhưng tốt nhất về dấu ngoặc kép là chúng cho phép các biểu thức chính quy cho khớp. Các Bash Hacker Wiki sẽ cung cấp cho bạn nhiều thủ đoạn theo hướng đó.
Bạn cũng có thể sử dụng các biểu thức khá thuận tiện như $((2**10))
hoặc các biểu thức số học khác theo dòng với $((expression))
cú pháp.
Sử dụng backticks cho subshells là tốt, mặc dù hơi lỗi thời. Nhưng khả năng lồng nhau của các $(command ...)
yêu cầu sẽ thuận tiện hơn vì bạn sẽ không phải trốn thoát nhiều thứ ở các cấp độ khác nhau.
Đây chỉ là một vài điều mà Bash cung cấp cho bạn qua sh
cú pháp POSIX phổ biến .
Nhưng nếu bạn muốn có nhiều sức mạnh hơn trên trình bao (không chỉ trong các tập lệnh), hãy xem qua zsh
.
/bin
và/usr/bin
. Kết quả là, có lẽ tốt hơn để sử dụng#!/usr/bin/env <shname>
cho tính di động những ngày này.