Vraag & Antwoord

OS Linux

pourquoi?? bashscript

Anoniem
maximilaan
6 antwoorden
  • Vreemd, een script draait niet op mijn Linux pc, ik probeer een simpel bash script uit maar hij weigert en dat terwijl op de andere Linux pc alles hetzelfde? is en scriptjes wel werken.
    error => bash: 'scriptnaam': command not found
    , nu weet ik wel dat bash zelf zoek zou moeten zijn, maar die staat waar je hem verwachten zou, nl in /bin, dus waarom werkt bijv. dit niet?

    #! /bin/bash
    echo "blabla"

  • ok stom,
    hij werkt alleen als het script in /bin staat….oeps
  • Het kan ook gewoon vanuit een andere dir, je moet de executable bits van het bestand zetten (man chmod), bijvoorbeeld: 'chmod a+x <scriptnaam>' zorgt ervoor dat alle users het script uit kunnen voeren. Vervolgens uitvoeren met './<scriptnaam>' als de script niet in het pad staat.

    BTW. als je geen rotzooi wilt maken is het verstandig geen scripts in /bin te zetten, officieel bevat het de basale utils om met een systeem te kunen werken (bijv. als het /usr filesystem kapot is), /sbin bevat met name programma's die tijdens het booten nodig zijn.
  • Heel warrig verhaal :wink:
    Maar zoals danielk al aangaf moet je het script wel eerst de juiste toegangsrechten geven om uitgevoerd te worden. (daarom weken iloveu-achtige virussen niet onder Linux..)
    de ingang
    #! /bin/bash
    is puur bedoelt om aan te geven wie het script mag uitvoeren. Voor bash hoeft het er volgens mij niet eens in te staan, omdat dat je standaard-shell is. Voor perl bijv. moet je het weer wel inzetten.

    Max
  • Jouw probleem is dat linux default de huidige directorie niet in het pad heeft staan. Dit om trojan horses tegen te gaan.
    Als een script niet in een directorie staat die deel uitmaakt van het pad, bv je home directorie, dan moet je hem expliciet aanwijzen.
    Staat het script in /home/gebruiker, dan doe je
    /home/gebruiker/scriptnaam
    of zelfs
    ~gebruiker/scriptnaam
    ~gebruiker vervangt bash door /home/gebruiker.

    Als je working directorie hetzelfde is als de directorie waain het script staat dan kun je volstaan met
    ./scriptnaam

    Waarom?
    Net als in DOS (wat niets meer is als een slechte single user unix maar dat heeft er eigenlijk niets mee te maken :grin:) betekent "." de huidige directorie en ".." de bovenliggende directorie.
  • Wat je ook kan gebeuren is dat je bv een perl script vanuit dos overneemt. Dat is dan een dos like tekst bestand met cr/lf.

    En dat vreet bash ook niet, die verwacht uitsluitend een lf.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.