Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ubuntu tietokoneissa => Aiheen aloitti: 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:
$ 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ä?
-
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:
echo $?
Nolla on onnistuminen.
-
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:
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!
-
Äh.
Ensinnäkin, olisihan se pitänyt tajuta että jos select-lause loppuu näin:
done || exit
niin 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:
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)
-
Löytyi. Vika oli tässä:
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.