Vad visas med kommandot "set"

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
flierman
Inlägg: 240
Blev medlem: 12 aug 2007, 22:18
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Östersund, Sweden

Vad visas med kommandot "set"

Inlägg av flierman »

Jag löser lite uppgifter och undrar över följande:

När jag skriver "env" visas ju mina miljövariabler, men om jag kör "set" så visas också mina miljövariabler men efter dessa kommer en hel massa andra saker. Någon som kan förklara vad det är som visas?

Gissar på att det är en del andra inställningar men förstår inte vilka de är?

Visar några nedan, inte alla...

Kod: Markera allt

_alias () 
{ 
    local cur;
    COMPREPLY=();
    cur=${COMP_WORDS[$COMP_CWORD]};
    case "$COMP_LINE" in 
        *[^=])
            COMPREPLY=($( compgen -A alias -S '=' -- $cur ))
        ;;
        *=)
            COMPREPLY=("$( alias ${cur%=} 2>/dev/null | 			     sed -e 's|^alias '$cur'\(.*\)$|\1|' )")
        ;;
    esac
}
_apt_cache () 
{ 
    local cur prev special i;
    COMPREPLY=();
    cur=`_get_cword`;
    prev=${COMP_WORDS[COMP_CWORD-1]};
    if [ "$cur" != show ]; then
        for ((i=0; i < ${#COMP_WORDS[@]}-1; i++ ))
        do
            if [[ ${COMP_WORDS[i]} == @(add|depends|dotty|policy|rdepends|madison|show?(pkg|src|)) ]]; then
                special=${COMP_WORDS[i]};
            fi;
        done;
    fi;
    if [ -n "$special" ]; then
        case $special in 
            add)
                _filedir;
                return 0
            ;;
            *)
                COMPREPLY=($( apt-cache pkgnames $cur 2> /dev/null ));
                return 0
            ;;
        esac;
    fi;
    case "$prev" in 
        -@(c|p|s|-config-file|-@(pkg|src)-cache))
            _filedir;
            return 0
        ;;
        search)
            if [[ "$cur" != -* ]]; then
                return 0;
            fi
        ;;
    esac;
    if [[ "$cur" == -* ]]; then
        COMPREPLY=($( compgen -W '-h -v -p -s -q -i -f -a -g -c \
				-o --help --version --pkg-cache --src-cache \
				--quiet --important --full --all-versions \
				--no-all-versions --generate --no-generate \
				--names-only --all-names --recurse \
				--config-file --option' -- $cur ));
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Re: Vad visas med kommandot "set"

Inlägg av mcNisse »

Det är vad jag skulle kalla för skal funktioner.
Du kan enkelt göra en sådana, tex

Kod: Markera allt

hw() {
echo 'Hello world!'
}
hw
Jag visste inte hur man visade upp dem, tack för tipset. Testa set -x det är nyttigt när man debuggar script.

Edit: set visar skalvariabler också. Dvs det visar inte bara variabler som är exporterade.
Användarvisningsbild
flierman
Inlägg: 240
Blev medlem: 12 aug 2007, 22:18
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Östersund, Sweden

Re: Vad visas med kommandot "set"

Inlägg av flierman »

Jag är inte riktigt införstådd vad en skalfunktion är för något, någon som kan ge en kort förklaring?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Vad visas med kommandot "set"

Inlägg av Konservburk »

flierman skrev:Jag är inte riktigt införstådd vad en skalfunktion är för något, någon som kan ge en kort förklaring?

Kod: Markera allt

       A shell function is an object that is called like a simple command  and
       executes  a  compound  command with a new set of positional parameters.
DVS du klumpar ihop ett gäng kommandon (compound command) och kan sedan anropa hela kommandoklumpen som om den vore ett enda vanligt kommando (simple command).
Skriv svar

Återgå till "Terminalforum"