setlà một nội dung shell , được sử dụng cho các tùy chọn shell set và unset và các tham số vị trí.
Không có đối số, setsẽ in tất cả các biến shell (cả biến môi trường và biến trong phiên hiện tại) được sắp xếp theo ngôn ngữ hiện tại .
Bạn cũng có thể đọc tài liệu bash .
Có một vài cảnh báo.
set "$var"sẽ gán vargiá trị cho $1. Nếu $varbắt đầu bằng -hoặc +, thì $varnội dung được coi là chuỗi các tùy chọn shell. Nếu $varchứa bất kỳ tùy chọn không hợp lệ, hầu hết các vỏ POSIX sẽ in lỗi. yashvà zshtrong sh, kshmô phỏng không chỉ in lỗi, mà còn thiết lập các tùy chọn hợp lệ. Trong khi yashdừng cài đặt tùy chọn trên tùy chọn không hợp lệ đầu tiên, zshsẽ chỉ định tất cả chúng. Trong yash:
var=-fxd; set "$var"
fvà xsẽ trình bày trong $-, trong khi:
var=fdx; set "$var"
chỉ ftrong hiện tại $-. Trong cả hai trường hợp, fvà xsẽ trình bày trong $-với zshtrong shvà kshthi đua.
Để bảo vệ bạn khỏi tình huống đó, bạn có thể chuyển --làm đối số đầu tiên để đặt tham số vị trí ngay cả khi nó bắt đầu bằng -hoặc +:
var=-fdx; set -- "$var"
sẽ gán $varcho $1, bất kể nội dung của nó.
set -- không có bất kỳ đối số nào nữa sẽ bỏ đặt tất cả các tham số vị trí.
Nếu đối số đầu tiên là -, hành vi là không xác định. Tất cả các vỏ POSIX đã biết sẽ bỏ đặt xvà vcác tùy chọn (ngoại trừ posh) và gán bất cứ thứ gì sau -cho các tham số vị trí:
set -xv - -f
sẽ giao -fcho $1. set -cũng không bỏ đặt tham số vị trí. Schily osh cũng cư xử như vậy. Gia truyền sh không bỏ đặt vvà xlựa chọn.
Ngoại lệ vỏ POSIX duy nhất là yash, được coi -là tham số vị trí đầu tiên:
$ yash -c 'set -xv - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
+ printf %s\n - -f
-
-f
+ printf %s\n cvx
cvx
Schily sh thậm chí không làm gì nếu -có mặt trong các đối số:
$ schily-sh -c 'set -v - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
<blank line>
s
$ schily-sh -c 'set -v -- -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
-f
vs