• 17 411 online
  • 1 202 658 medlemmar
  • 62 228 707 inlägg
2014-12-09, 21:08
  #1
Medlem
Tänkte att jag skulle lägga till lite terminalalias vid uppstart och lekte då lite med min .profile fil och då min kunskap i bash-scripts ungefär sträcker sig till att dom ofta slutar på .sh så lyckades jag fucka upp och får nu felmedelandet end of file when fi expected när jag försöker logga in.

Det jag försökt och tror jag lyckats åstakomma är att vid uppstart kör den ett script vid namn .bash_aliases som jag givetvis inte avslutade med något fi och däri ligger problemet.

Hur kommer jag åt och raderar eller ändrar den filen på enklaste sätt? Eller ännu bättre återställer min .profile fil.
Citera
2014-12-09, 21:47
  #2
Medlem
Alfaslangs avatar
Håll nere Shift på tangentbordet när datorn bootar för att komma in i bootloadermenyn. Där väljer du det valet som slutar på "recovery" ute till höger.

När din dator sen bootat så får du upp en meny. Gå till "root" (näst längst ner) och välj det. Lösenordet du matar in vid prompten du då får upp är det lösenordet du satt på ditt eget login.

Du blir nu inloggad som root-användaren, och det första du lär märka är att din rotdisk är monterad "read-only". För att åtgärda det, kör helt enkelt följande kommando: mount -o remount,rw /

Lycka till!
Citera
2014-12-09, 22:09
  #3
Medlem
Citat:
Ursprungligen postat av Alfaslang
Håll nere Shift på tangentbordet när datorn bootar för att komma in i bootloadermenyn. Där väljer du det valet som slutar på "recovery" ute till höger.

När din dator sen bootat så får du upp en meny. Gå till "root" (näst längst ner) och välj det. Lösenordet du matar in vid prompten du då får upp är det lösenordet du satt på ditt eget login.

Du blir nu inloggad som root-användaren, och det första du lär märka är att din rotdisk är monterad "read-only". För att åtgärda det, kör helt enkelt följande kommando: mount -o remount,rw /

Lycka till!

Gick kanonbra, stort tack!
Citera
2014-12-09, 23:28
  #4
Moderator
vhes avatar
För framtida bruk: din .profile kommer att exekveras i ditt skal (bash). Detta betyder i praktiken att du kan testa den genom att skriva
Kod:
. .profile

Den första punkten är där med flit. Detta kommer att exekvera den i ditt nuvarande skal (eller ditt nuvarande terminalfönster, om du så vill). Om det genererar ett felmeddelande så vet du att nått är knas, och att det är en dålig ide att logga ut utan att åtgärda det.
Citera
2014-12-10, 10:54
  #5
Medlem
Citat:
Ursprungligen postat av vhe
För framtida bruk: din .profile kommer att exekveras i ditt skal (bash). Detta betyder i praktiken att du kan testa den genom att skriva
Kod:
. .profile

Den första punkten är där med flit. Detta kommer att exekvera den i ditt nuvarande skal (eller ditt nuvarande terminalfönster, om du så vill). Om det genererar ett felmeddelande så vet du att nått är knas, och att det är en dålig ide att logga ut utan att åtgärda det.

Ah det var ett bra tips! Tack. Om man får fråga, vad är det för skillnad mellan att köra scripts . jämnfört med sh? eller är att man använder sh något jag bara fått för mig?
Citera
2014-12-10, 23:45
  #6
Moderator
vhes avatar
Citat:
Ursprungligen postat av Komposthoran
Ah det var ett bra tips! Tack. Om man får fråga, vad är det för skillnad mellan att köra scripts . jämnfört med sh? eller är att man använder sh något jag bara fått för mig?

Nejdå, det är inte bara något du har fått för dig. Det handlar om vilken process sakerna händer i.

Om du gör:
Kod:
sh foo.sh

...så kommer det startas en ny process (/bin/sh) som kör kommandona som står i foo.sh. När alla kommandon är körda, så kommer den processen att dö.

Om du gör:
Kod:
. foo.sh
eller
Kod:
source foo.sh

...så kommer kommandona i foo.sh köras i den nuvarande processen, som kommer att fortsätta leva efter kommandona i filen är slut.

Generellt sett så använder man den första varianten när man vill ha ett skript som, tja, faktiskt gör saker (skapar filer, hämtar data, vad som helst) kört. Den andra varianten använder man bara när man vill påverka ens nuvarande skal beter sig - t.ex. just skapar alias, som du försökte göra.

Lite förenklat, om det du vill göra är något av: alias, export, set och liknande, då vill du använda source eller . (punkt). Annars vill du köra det som ett eget skript.
Citera
2014-12-11, 14:19
  #7
Medlem
Citat:
Ursprungligen postat av vhe
Nejdå, det är inte bara något du har fått för dig. Det handlar om vilken process sakerna händer i.

Om du gör:
Kod:
sh foo.sh

...så kommer det startas en ny process (/bin/sh) som kör kommandona som står i foo.sh. När alla kommandon är körda, så kommer den processen att dö.

Om du gör:
Kod:
. foo.sh
eller
Kod:
source foo.sh

...så kommer kommandona i foo.sh köras i den nuvarande processen, som kommer att fortsätta leva efter kommandona i filen är slut.

Generellt sett så använder man den första varianten när man vill ha ett skript som, tja, faktiskt gör saker (skapar filer, hämtar data, vad som helst) kört. Den andra varianten använder man bara när man vill påverka ens nuvarande skal beter sig - t.ex. just skapar alias, som du försökte göra.

Lite förenklat, om det du vill göra är något av: alias, export, set och liknande, då vill du använda source eller . (punkt). Annars vill du köra det som ett eget skript.

Ah då förstår jag! Tack för svaret
Citera