Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ubuntu tietokoneissa => Aiheen aloitti: Mistofelees - 18.05.10 - klo:10.46
-
Tein scriptin hakemistoon /usr/bin. Nyt haluaisin siirtää sen hakemistoon /usr/local/bin.
Siirto onnistuu, mutta tämän jälkeen järjestelmä ei löydä sitä, vaan ilmoittaa:
- bash: /usr/bin/loki.sh: Tiedostoa tai hakemistoa ei ole
Kuukkelin ohjeiden mukaisesti suoritin komennon updatedb
- locate loki.sh antaa nyt oikean tuloksen, scriptin kutsu antaa kuitenkin saman virheen
komento updatedb.mlocate ei paranna tilannetta.
cp /usr/local/bin/loki.sh /usr/local/bin/LLoki.sh
locate LLoki.sh antaa oikean tuloksen, scriptin LLoki.sh kutsu toimii
Onko ideoita, miten tämän locaten saisi järkiinsä ?
Scripti sinänsä ei ole ihmeellinen, tein sen vaan helpottamaan rootin lokikirjan ylläpitoa:
#!/bin/bash
joe /home/root/uptime.txt
-
#!/bin/bash
joe /home/root/uptime.txt
Jos et ole erikseen tehnyt /home/root hakemistoa ei sitä oletuksena ole. Root:in kotihakemisto on juuressa /root
Usein updatedb ajetaan ajastettuna, esim. konetta käynnistetteässä tms. Yleensä en itse käytä tuota ajastusta updatedb:n vuoksi, vaan ajan ohjelman tarvittaessa tuoreempi tieto tiedostoista.
-
Tein scriptin hakemistoon /usr/bin. Nyt haluaisin siirtää sen hakemistoon /usr/local/bin.
Siirto onnistuu, mutta tämän jälkeen järjestelmä ei löydä sitä, vaan ilmoittaa:
- bash: /usr/bin/loki.sh: Tiedostoa tai hakemistoa ei ole
Locatella ei tämän asian kanssa ole mitään tekemistä. Se on pelkkä käyttäjän apuväline, polkuhaut tehdään aivan riippumatta siitä.
Kuten Mistofeleeskin taitaa epäillä, sanoisin, että nyt ei joe-ohjelmaa tai jotakin sen tarvitsemista kirjastoista löydy.
-
Tein scriptin hakemistoon /usr/bin. Nyt haluaisin siirtää sen hakemistoon /usr/local/bin.
Siirto onnistuu, mutta tämän jälkeen järjestelmä ei löydä sitä, vaan ilmoittaa:
- bash: /usr/bin/loki.sh: Tiedostoa tai hakemistoa ei ole
Olen törmännyt samaan eli ohjelman/scriptin siirto toiseen paikkaan aiheuttaa tuon virheilmoituksen. En ole tutkinut tarkemmin, mutta kyse lienee siitä että bash (tai mikä lienee) pitää ohjelmien paikkoja muistissaan. :o Uloskirjautuminen auttanee. Kokeile antaa komento niin että mukana on koko polku:
$ /usr/local/bin/loki.sh
Jos toimii, silloin kyse on todennäköisesti tästä.
Ps. locate ei tosiaan liity tähän asiaan mitenkään.
-
Tein scriptin hakemistoon /usr/bin. Nyt haluaisin siirtää sen hakemistoon /usr/local/bin.
Siirto onnistuu, mutta tämän jälkeen järjestelmä ei löydä sitä, vaan ilmoittaa:
- bash: /usr/bin/loki.sh: Tiedostoa tai hakemistoa ei ole
Tuo on oikea ilmoitus, koska itse siirsit tiedoston pois tuosta hakemistosta. Komentotulkki bash nopeuttaa komentojen hakua pitämällä kirjaa siitä missä mikäkin komento oli, ja nyt se kirjanpito ei tältä osin pidä paikkaansa.
Tilanne korjaantuu, kun käynnistää uuden bash-tulkin, eli avaa uuden pääteikkunan tai kirjautuu sisään toiselta konsolilta. Tuossa samassa komentotulkissa jossa tuli ilmoitus ettei tiedostoa ole, voi komentaa
hash loki.sh
tai
hash -r
ja noiden pitäisi saada se sisäinen kirjanpito korjattua ja komennot alkaa löytymään, jos vaan se uusi hakemisto /usr/local/bin on hakupolussa eli PATH-muuttujassa (katso komentamallla echo $PATH).