Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ubuntu tietokoneissa => Aiheen aloitti: AimoE - 25.05.25 - klo:17.53

Otsikko: Yksittäinen komento ei talletu Bash-historiaan [RATKAISTU]
Kirjoitti: AimoE - 25.05.25 - klo:17.53
Minulla on komentotiedosto ~/bin/tahdista, ojta tarvitse päivittäin. Hakemisto ~/bin on polussa, joten voin suorittaa tiedoston normaalisti, mutta kun pääteikkunassa painan nuolta ylöspäin, juuri suoritettu komento ei löydy historiasta kuten muut komennot.

Olen yrittänyt etsiä syytä, mm. seuraavilla keinoilla:

Koodia: [Valitse]
$ env | grep HIST
HISTIGNORE=[ \t]*:&:bg:fg:exit
$ alias tahdista
bash: alias: tahdista: ei löytynyt

Miten jonkun komennon voi piilottaa niin ettei syy selviä?
Otsikko: Vs: Yksittäinen komento ei talletu Bash-historiaan
Kirjoitti: Tomin - 25.05.25 - klo:18.20
Muistaakseni jossain komentotulkeissa joillain asetuksilla virheen palauttavat komennot eivät talennu historiaan. Toinen vaihtoehto voisi olla, että komento on vielä ajossa kuin suljet päätteen, mutta sen varmaankin tietäisit.

Viimeisimmän komennon paluuarvon voi katsoa sh:n sukuisissa tulkeissa vaikkapa näin:
Koodia: [Valitse]
echo $?Nolla on onnistuminen.
Otsikko: Vs: Yksittäinen komento ei talletu Bash-historiaan
Kirjoitti: AimoE - 25.05.25 - klo:19.37
Muistaakseni jossain komentotulkeissa joillain asetuksilla virheen palauttavat komennot eivät talennu historiaan. Toinen vaihtoehto voisi olla, että komento on vielä ajossa kuin suljet päätteen, mutta sen varmaankin tietäisit.

Viimeisimmän komennon paluuarvon voi katsoa sh:n sukuisissa tulkeissa vaikkapa näin:
Koodia: [Valitse]
echo $?Nolla on onnistuminen.

Jep. Komentotiedosto on interaktiivinen, ja poistun dialogista painamalla Ctrl-D. Siitä tulee paluukodi 1. En ole koskaan aiemmin ollut sellaisessa tilanteessa, että olisin tuon huomannut.

Kiitos!
Otsikko: Vs: Yksittäinen komento ei talletu Bash-historiaan
Kirjoitti: AimoE - 25.05.25 - klo:19.57
Äh.

Ensinnäkin, olisihan se pitänyt tajuta että jos select-lause loppuu näin:

Koodia: [Valitse]
done || exitniin tietysti sieltä tulee virhekoodi. Muutin sen muotoon "done || exit 0" ja tarkistin, että komentotiedoston jälkeen $? on tosiaan nolla.

Mutta korjauksesta huolimatta komento "tahdista" ei siltikään tartu historiaan! Johan meni mysteeriseksi.

Tiedostossa on pari eri select-lausetta; tässä niistä yksinkertaisempi ja sekin hieman yksinkertaistettuna:

Koodia: [Valitse]
poimi(){
    local PS3=$(printf "$kehote")
    select dir in */
    do
[ -n "$dir" ] || continue
echo ${dir%/}
break
    done || exit 0
}

(ja juu, tiedoston voi poimia helpomminkin, mutta tuo koodipätkä on mukana vain kaiken varalta; valitsin sen malliksi yksinkertaisuuden vuoksi)
Otsikko: Vs: Yksittäinen komento ei talletu Bash-historiaan [RATKAISTU]
Kirjoitti: AimoE - 26.05.25 - klo:10.36
Löytyi. Vika oli tässä:

Koodia: [Valitse]
HISTIGNORE=[ \t]*:&:bg:fg:exit

En yhtään muista miten tuo \t on tullut mukaan ja milloin. Se on häirinnyt yllättävän harvoin. Ainoa komento jonka kanssa olen sitä ihmetellyt on touch, jota sitäkään ei tarvita kovn usein.