
set
パラメータのないコマンドは何をしますか?
ご覧のとおり、コマンドenv
と同様に、環境変数がアルファベット順に印刷されます。そして、いくつかの異なる情報(変数?関数?)をさらに印刷します。たとえば、次のようになります。
__git_printf_supports_v=yes
__grub_script_check_program=grub-script-check
...
quote ()
{
local quoted=${1//\'/\'\\\'\'};
printf "'%s'" "$quoted"
}
quote_readline ()
{
local quoted;
_quote_readline_by_ref "$1" ret;
printf %s "$ret"
}
それは何であり、どこから来るのですか?
set
パラメータがないと、コマンドに関する情報が見つかりません。実際、私のLinuxディストリビューションにはman
ページがまったくありません。set
答え1
set
環境変数だけでなく、リストの最後に表示されるシェル関数まで、すべてのシェル変数を表示するシェル組み込みです。
変数は、行の実行またはインポート時に設定できる構文で表されます。
~からbash
マニュアルページ:
オプションまたは引数が指定されていない場合、setは現在のロケールに従ってソートされているすべてのシェル変数と関数の名前と値を、現在設定されている変数を設定またはリセットするための入力として再利用できる形式で表示します。
動作は他のシェルで必ずしも同じである必要はありません。たとえば、ksh
set
シェル機能は表示されません。
答え2
set
シェルが組み込まれています。、シェルオプション、および位置パラメータを設定および設定解除するために使用されます。
引数がない場合は、set
現在の順序のすべてのシェル変数が印刷されます(現在のセッションの環境変数と変数を含む)。ロケール。
また、読むことができますバッシュ文書。
いくつかの注意事項があります。
set "$var"
var
に割り当てられます$1
。またはで始まると、$var
内容は一連のシェルオプションとして扱われます。ほとんどのPOSIXシェルは、無効なオプションが含まれているとエラーを出力します。で、シミュレーションはエラーを印刷するだけでなく、有効なオプションも設定します。最初の無効なオプションでオプション設定が停止すると、すべてのオプションが割り当てられます。存在する:-
+
$var
$var
yash
zsh
sh
ksh
yash
zsh
yash
var=-fxd; set "$var"
f
同時にx
表示されます。$-
var=fdx; set "$var"
どちらの場合もf
存在し、シミュレーションに表示されます。$-
f
x
$-
zsh
sh
ksh
これを防ぐには、--
位置引数を最初の引数として渡して設定できます。これは-
、またはで始まっても次のようになります+
。
var=-fdx; set -- "$var"
内容に関係なく$var
に割り当てられます。$1
set --
追加の引数がない場合は、すべての位置引数がリセットされます。
最初の引数がある場合、アクションは-
指定されません。既知のすべてのPOSIXシェルはオプション(除く)をオフにし、それ以降のすべての項目を位置引数に割り当てますx
。v
posh
-
set -xv - -f
-f
に割り当てられ、$1
位置set -
引数も設定解除されません。ヒリオスこのような行動もあります。ガボsh設定v
とx
オプションはキャンセルされません。
唯一のPOSIXシェル例外は、最初の位置引数として処理さyash
れることです。-
$ yash -c 'set -xv - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
+ printf %s\n - -f
-
-f
+ printf %s\n cvx
cvx
ヒリッシュ-
引数に if がある場合は何もしません。
$ 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
答え3
set
出力はあり、何も返されないので、which set
これが使用中のシェル(おそらくbash)の一部であることがわかります。
男乱交何度も言及しましたが、接続が簡単です。オンライン文書。
この組み込み関数は非常に複雑で、別々のセクションが必要です。 setを使用すると、シェルオプションの値を変更したり、位置パラメータを設定したり、シェル変数の名前と値を表示したりできます。
セットの呼び出し仕様は次のとおりです。
set [--abefhkmnptuvxBCEHPT] [-o option-name] [argument …]
set [+abefhkmnptuvxBCEHPT] [+o option-name] [argument …]
したがって、manコマンドラインで検索するには、次のように検索できます。
/set.*abef
答え4
パラメータがないと、setコマンドに関する情報が見つかりません。実際、私のLinuxディストリビューションには設定されたマニュアルページはまったくありません。
実際にはset
bash自体が組み込まれているので、manページではなくbashのヘルプマニュアルにアクセスできます。これを行うには、help
この例ではまたはを使用できますhelp set
。