パラメータのないsetコマンドの機能は何ですか?

パラメータのないsetコマンドの機能は何ですか?

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$varyashzshshkshyashzshyash

var=-fxd; set "$var"

f同時にx表示されます。$-

var=fdx; set "$var"

どちらの場合もf存在し、シミュレーションに表示されます。$-fx$-zshshksh

これを防ぐには、--位置引数を最初の引数として渡して設定できます。これは-、またはで始まっても次のようになります+

var=-fdx; set -- "$var"

内容に関係なく$varに割り当てられます。$1

set --追加の引数がない場合は、すべての位置引数がリセットされます。

最初の引数がある場合、アクションは-指定されません。既知のすべてのPOSIXシェルはオプション(除く)をオフにし、それ以降のすべての項目を位置引数に割り当てますxvposh-

set -xv - -f

-fに割り当てられ、$1位置set -引数も設定解除されません。ヒリオスこのような行動もあります。ガボsh設定vxオプションはキャンセルされません。

唯一の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ディストリビューションには設定されたマニュアルページはまったくありません。

実際にはsetbash自体が組み込まれているので、manページではなくbashのヘルプマニュアルにアクセスできます。これを行うには、helpこの例ではまたはを使用できますhelp set

関連情報