Kirjoittaja Aihe: Yksittäinen komento ei talletu Bash-historiaan [RATKAISTU]  (Luettu 441 kertaa)

AimoE

  • Käyttäjä
  • Viestejä: 2850
    • Profiili
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ä?
« Viimeksi muokattu: 26.05.25 - klo:10.34 kirjoittanut AimoE »

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11521
    • Profiili
    • Tomin kotisivut
Vs: Yksittäinen komento ei talletu Bash-historiaan
« Vastaus #1 : 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.
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

AimoE

  • Käyttäjä
  • Viestejä: 2850
    • Profiili
Vs: Yksittäinen komento ei talletu Bash-historiaan
« Vastaus #2 : 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!

AimoE

  • Käyttäjä
  • Viestejä: 2850
    • Profiili
Vs: Yksittäinen komento ei talletu Bash-historiaan
« Vastaus #3 : 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)
« Viimeksi muokattu: 25.05.25 - klo:20.16 kirjoittanut AimoE »

AimoE

  • Käyttäjä
  • Viestejä: 2850
    • Profiili
Vs: Yksittäinen komento ei talletu Bash-historiaan [RATKAISTU]
« Vastaus #4 : 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.