setadalah shell builtin , digunakan untuk opsi shell dan set unset dan parameter posisi.
Tanpa argumen, setakan mencetak semua variabel shell (variabel lingkungan dan variabel dalam sesi saat ini) diurutkan dalam lokal saat ini .
Anda juga dapat membaca dokumentasi bash .
Ada beberapa peringatan.
set "$var"akan memberikan varnilai $1. Jika $varmulai dengan -atau +, maka $varkonten diperlakukan sebagai urutan opsi shell. Jika $varberisi opsi yang tidak valid, sebagian besar shell POSIX akan mencetak kesalahan. yashdan zshdi sh, kshemulasi tidak hanya mencetak kesalahan, tetapi juga pilihan pengaturan valid. Sementara yashberhenti mengatur opsi pada opsi tidak valid pertama, zshakan menetapkan semuanya. Dalam yash:
var=-fxd; set "$var"
fdan xakan hadir $-, sementara:
var=fdx; set "$var"
hanya fhadir di $-. Dalam kedua kasus, fdan xakan hadir di $-dengan zshdi shdan kshemulasi.
Untuk melindungi Anda dari situasi itu, Anda dapat memberikan --argumen pertama untuk menetapkan parameter posisi meskipun diawali dengan -atau +:
var=-fdx; set -- "$var"
akan ditugaskan $varuntuk $1, terlepas dari kontennya.
set -- tanpa argumen lebih lanjut akan membatalkan semua parameter posisi.
Jika argumen pertama adalah -, perilaku tersebut tidak ditentukan. Semua shell POSIX yang dikenal akan di-unset xdan vopsi (kecuali posh), dan menetapkan apa pun setelah -parameter posisi:
set -xv - -f
akan ditugaskan -funtuk $1. set -juga tidak menghapus parameter posisi. Schily osh juga berperilaku seperti itu. Pusaka sh jangan disetel vdan xopsi.
Satu-satunya pengecualian shell POSIX adalah yash, yang memperlakukan -sebagai parameter posisi pertama:
$ yash -c 'set -xv - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
+ printf %s\n - -f
-
-f
+ printf %s\n cvx
cvx
Schily bahkan tidak melakukan apa pun jika -ada dalam argumen:
$ 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