set
kabuk seçeneklerini ve konum parametrelerini ayarlamak ve ayarlamak için kullanılan bir kabuk yerleşikidir .
Bağımsız değişkenler olmadan set
tüm kabuk değişkenlerini (geçerli ortamdaki hem ortam değişkenleri hem de değişkenler) geçerli yerel ayara göre yazdırır .
Ayrıca bash belgelerini de okuyabilirsiniz .
Birkaç uyarı var.
set "$var"
var
değerine değer atayacaktır $1
. Eğer $var
başlangıç ile -
ya da +
, daha sonra $var
içerik kabuk seçeneklerinin dizileri gibi muamele edilmiştir. Eğer $var
geçersiz seçenekleri içerir, en POSIX kabukları hatayı yazdırır. yash
ve zsh
içinde sh
, ksh
öykünme yalnızca hatayı yazdırmakla kalmaz, aynı zamanda geçerli seçenekleri de ayarlar. İken yash
durdurma ilk geçersiz seçeneği ayar seçenekleri, zsh
hepsini atar. İçinde yash
:
var=-fxd; set "$var"
f
ve x
şu $-
süre içinde sunulacak :
var=fdx; set "$var"
sadece f
mevcut $-
. Her iki durumda da f
ve içinde ve öykünme ile x
sunulacak .$-
zsh
sh
ksh
Sizi bu durumdan korumak için --
, -
veya ile başlasa bile konum parametresini ayarlamak için ilk argüman olarak geçebilirsiniz +
:
var=-fdx; set -- "$var"
atayacaktır $var
için $1
içeriği ne olursa olsun,.
set --
başka argüman olmadan tüm konumsal parametreleri ayarlayamazsınız.
İlk argüman ise -
, davranış belirtilmez. Bilinen tüm POSIX kabukları ayarlanmayacak x
ve v
seçenekler (hariç posh
) olacak ve -
konumsal parametrelere sonra herhangi bir şey atayacaktır :
set -xv - -f
atayacaktır -f
için $1
. set -
ayrıca konum parametrelerini de ayarlamadı. Schily osh da böyle davranıyor. Hatıra sh unset v
ve x
seçenekleri yok.
İlk konumsal parametre olarak yash
davranan tek POSIX kabuk istisnası -
:
$ yash -c 'set -xv - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
+ printf %s\n - -f
-
-f
+ printf %s\n cvx
cvx
Schily sh-
, argümanlarda varsa hiçbir şey yapmaz :
$ 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