Sida 1 av 1

Vad visas med kommandot "set"

Postat: 18 nov 2008, 12:52
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 ));

Re: Vad visas med kommandot "set"

Postat: 18 nov 2008, 14:28
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.

Re: Vad visas med kommandot "set"

Postat: 20 nov 2008, 11:13
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?

Re: Vad visas med kommandot "set"

Postat: 20 nov 2008, 11:30
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).