我在 Xubuntu 的桌面上打开了一个终端,输入 set,然后输入一个新行。我本以为会看到我的环境变量,但我看到的只是一大堆代码。到底发生了什么?
以下是部分代码
pactl ()
{
local cur prev words cword preprev command;
local comps;
local flags='-h --help --version -s --server= --client-name=';
local list_types='short sinks sources sink-inputs source outputs cards
modules samples clients';
local commands=(stat info list exit upload-sample play-sample remove-sample load-module unload-module move-sink-input move-source-output suspend-sink suspend-source set-card-profile set-sink-port set-source-port set-sink-volume set-source-volume set-sink-input-volume set-source-output-volume set-sink-mute set-source-mute set-sink-input-mute set-source-output-mute set-sink-formats set-port-latency-offset subscribe help);
_init_completion -n = || return;
preprev=${words[$cword-2]};
for word in "${COMP_WORDS[@]}";
do
if in_array "$word" "${commands[@]}"; then
command=$word;
break;
fi;
done;
case $preprev in
list)
COMPREPLY=($(compgen -W 'short' -- "$cur"))
;;
play-sample)
comps=$(__sinks);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
move-sink-input)
comps=$(__sinks);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
move-source-output)
comps=$(__sources);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
set-card-profile)
comps=$(__profiles);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
set-*-port)
comps=$(__ports);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
set-*-mute)
COMPREPLY=($(compgen -W 'true false toggle' -- "$cur"))
;;
set-sink-formats)
;;
set-port-*)
comps=$(__ports);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
--server)
compopt +o nospace;
_known_hosts_real "$cur"
;;
esac;
[[ -n $COMPREPLY ]] && return 0;
case $prev in
list)
COMPREPLY=($(compgen -W '${list_types[*]}' -- "$cur"))
;;
stat)
COMPREPLY=($(compgen -W 'short' -- "$cur"))
;;
upload-sample)
_filedir
;;
play-sample)
;;
remove-sample)
;;
load-module)
comps=$(__all_modules);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
unload-module)
comps=$(__loaded_modules);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
set-card*)
comps=$(__cards);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
*sink-input*)
comps=$(__sink_inputs);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
*source-output*)
comps=$(__source_outputs);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
set-sink-formats)
comps=$(__sinks_idx);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
*sink*)
comps=$(__sinks);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
*source*)
comps=$(__sources);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
set-port*)
comps=$(__cards);
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
;;
-s)
_known_hosts_real "$cur"
;;
esac;
[[ -n $COMPREPLY ]] && return 0;
case $cur in
--server=*)
cur=${cur#*=};
_known_hosts_real "$cur"
;;
-*)
COMPREPLY=($(compgen -W '${flags[*]}' -- "$cur"));
[[ $COMPREPLY == *= ]] && compopt -o nospace
;;
*)
[[ -z $command ]] && COMPREPLY=($(compgen -W '${commands[*]}' -- "$cur"))
;;
esac
}
答案1
您所看到的是 shell 中定义的函数,它与变量非常相似,也是您环境的一部分。
实际上环境变量也列出了 - 它们首先出现,然后滚动出屏幕。
尝试使用此命令能够在整个结果中上下滚动:
set | less
您还可以使用 和 进行/
搜索?
。
(我假设这里的 shell bash
— 诸如打印顺序之类的细节在其他 shell 中可能会有所不同。)