Exekvering av kommando vid skapande av nytt TTY fönster

Tråden skapades och har fått 14 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Sundsvall
  • 2007-06-14 16:25

Hej alla glada och trevliga!
Min onödigt lång problembeskrivning men lite relevant ändå:
Satt under dagen och skapade ett enkelt bash-script för att kontrollera om min wi-fi var igång eller inte och startade den om det inte var det. Scriptet fungerar precis som det skall. Men av någon underlig anledning ville det inte stänga fönstret efter det exikverat klart. Använder mig av

exit

och

exit 0

. Dessa två kommandon fungerar perfekt direkt ifrån terminalen, men alltså inte innifrån skriptet. Och vad jag har förstått skall detta även fugera inifrån skript ( om någon har en lösnign på detta får de gärna säga till).

Detta är dock inte det som får mig att skriva. Det som irriterar mig just nu är att jag skapade ett alias för scriptet i /etc/bashrc som jag brukligen gör. Men något skumt efter detta började uppträda. Varje gång jag startar ett nytt terminal-fönster körs mitt alias kommando. Någon som vet vad som kan felas ? Vet inte riktigt vart jag skall söka efter felet.
Har just nu avaktiverat kommandot vilket bara leder till att så fort jag startat en ny tty så klagar den på att kommandot ej existerar.

*egna spekulationer*
Vad mig veteligen har jag inte sparat något någonstanns som kan ha påverkat detta. Dock har dock har Quicksilver kraschat i samband med att använt mig av:

killall Terminal

i slutet av mitt script för att få det att stänga terminalen. Kan detta ha påverkat något?

Tackar på förhand för all hjälp jag kan få

Senast redigerat 2007-06-14 16:47

Jag vet inte hur du löser exakt det du vill göra men ett annat alternativ är att du kör shell-kommandon från eller skript från Applescript. Då slipper du trassla med Terminalen.

En tanke bara...

  • Medlem
  • Sundsvall
  • 2007-06-14 18:03
Ursprungligen av morgan_a:

Jag vet inte hur du löser exakt det du vill göra men ett annat alternativ är att du kör shell-kommandon från eller skript från Applescript. Då slipper du trassla med Terminalen.

En tanke bara...

glömde säga det. Det jag gör är att starta min wifi anslutning ifrån terminalen. Dvs ifconfig en1 up/down beroende på om den redan är igång eller inte.

#bash
# Gets status of wi-fi
status=`ifconfig en1| grep status| awk '{print $4}'`

if [ "$status" == "active" ]
then
        sudo ifconfig en1 down
else
        sudo ifconfig en1 up
fi

Men sudo kräver lösenord av mig, iallafall första gången så jag måste göra det via terminalen. OM det inte finns en smidigare lösning via applescript då dvs ?

// Angående mitt andra problem

har skapat en .bashrc och .bash_profile nu i mitt ~/ så jag ändra ting lokalt istället för globalt ( återställt /etc/bashrc och /etc/profile till orginal konfiguration). Men jag får fortfarande upp min skumma bugg. Dvs att så fort jag startar ett nytt terminalfönster så anropas ett kommando( föredetta alias som jag skapat). Ingen som vet hur jag stället tillbaka detta till att bara starta "normalt".

Detta är alltså det som dyker upp varje gång jag öppnar/skapar en ny tty

Ramn:~ henhed$: wifi
-bash: wifi: command not found
Ramn:~ henhed$:

  • Medlem
  • Mölndal
  • 2007-06-14 18:44

Exakt vad har du skrivit i din .bashrc? Alla rader i den körs ju vid bash-start. Har du månne glömt att skapa alias och kör istället ditt script rakt av?

  • Medlem
  • Sundsvall
  • 2007-06-14 18:59
Ursprungligen av memark:

Exakt vad har du skrivit i din .bashrc? Alla rader i den körs ju vid bash-start. Har du månne glömt att skapa alias och kör istället ditt script rakt av?

Inget som inte skall vara där vad jag vet .. Jag ... ironiskt nog .. har inget (vad som finns i min kännedom) kvar som _kör_ scriptet alls. Men uppenbarligen kallar ju något på det .. men vad *undviker att svära* fanken kan det vara ?

/etc/profile

# System-wide .profile for sh(1)

PATH="/bin:/sbin:/usr/bin:/usr/sbin"
export PATH

if [ "${BASH-no}" != "no" ]; then
        [ -r /etc/bashrc ] && . /etc/bashrc
fi

/etc/bashrc

# System-wide .bashrc file for interactive bash(1) shells.
if [ -n "$PS1" ]; then PS1='\h:\w \u\$: '; fi
# Make bash check it's window size after a process completes
shopt -s checkwinsize

~/bash_profile

# Used to set enviromental variables
if [ -n "$PS1" ]; then PS1='\h:\w \u\$: '; fi
source ~/.bashrc

~/.bashrc

# User-wide .bashrc file for interactive bash shells.
# Set alias here
alias ll='ls -laG'
alias scrobble='bash /Users/henhed/scripts/itunes\&scrobbler_start.sh'
alias kill_scrobble='bash /Users/henhed/scripts/itunesKill.sh'
  • Medlem
  • Sundsvall
  • 2007-06-14 19:36

Provar starta Terminalen med kommadot :

/bin/bash --verbose

shopt -s checkwinsizes window size after a process completes
# User-wide .bashrc file for interactive bash shells.
# Set alias here
alias ll='ls -laG'
alias scrobble='bash /Users/henhed/scripts/itunes\&scrobbler_start.sh'
alias kill_scrobble='bash /Users/henhed/scripts/itunesKill.sh'
bash-2.05b$ wifi
wifi
bash: wifi: command not found
bash-2.05b$ 

Som det verkar "ploppar" den bara in "kommandot" wifi utan anledning så fort ett nytt skal startas, uppträder dock inte i subskal. *sliter sitt hår och hoppar i irritation*

  • Medlem
  • Mölndal
  • 2007-06-14 20:09

Ingen inställning i applikationen Terminal?
Uppträder det om du väljer ett annat shell som default vid login?

  • Medlem
  • Sundsvall
  • 2007-06-14 20:37
Ursprungligen av memark:

Ingen inställning i applikationen Terminal?
Uppträder det om du väljer ett annat shell som default vid login?

Jo det måste ju vara det, men vart? ... Och hur kommer jag åt de inställningarana ? .. Hittar inget som man stämma i preferences och Window settings(?). Någon aning vart det kan ha ställts in ?

Spelar ingen roll vilket shell, uppkommer i alla. Så jo Felet borde sitta i Terminalen.

  • Medlem
  • Mölndal
  • 2007-06-14 21:33

Har du en .login nånstans?

  • Medlem
  • International user
  • 2007-06-14 21:52

Jag lägger in "exit" i aliasbeskrivningen när jag vill att ett fönster ska stänga efter att scriptet körs. Kräver då att Fönsterinställningen är inställd så att fönstret ska stängas när tolken avslutas.

alias testfunktion="./test.sh;exit"

Fungerar lika bra i .term-filer. Kör och stäng.

Anledningen till att det inte fungerar i scriptet är att "exit" kör i en ny instans av tolken. Tolken i sig får aldrig kommandot.

  • Medlem
  • Sundsvall
  • 2007-06-15 08:36
Ursprungligen av Wire:

Jag lägger in "exit" i aliasbeskrivningen när jag vill att ett fönster ska stänga efter att scriptet körs. Kräver då att Fönsterinställningen är inställd så att fönstret ska stängas när tolken avslutas.

alias testfunktion="./test.sh;exit"

Fungerar lika bra i .term-filer. Kör och stäng.

Anledningen till att det inte fungerar i scriptet är att "exit" kör i en ny instans av tolken. Tolken i sig får aldrig kommandot.

För att citera Lorry : "Aaaa smart!". Funkar som en klocka! ... Att man inte tänkte på det själv! *DoH*

  • Medlem
  • Mölndal
  • 2007-06-14 21:59

Caine72, du kan ju slänga/flytta bort alla inställningsfiler för Terminalen. Prova också att ladda ner en alternativ Terminal och prova med.

Är osäker på vad som indexeras, men prova att söka efter ditt kommando i Spotlight.

  • Medlem
  • Sundsvall
  • 2007-06-15 08:42
Ursprungligen av memark:

Caine72, du kan ju slänga/flytta bort alla inställningsfiler för Terminalen. Prova också att ladda ner en alternativ Terminal och prova med.

Är osäker på vad som indexeras, men prova att söka efter ditt kommando i Spotlight.

... Me be a fool! .. Klart det bara var att ta bort plist-filen. Det är inte lätt när man är dum ^^*DOH*! Bugar och bockar och tackar för hjälpen! Alltid de enklaste lösningarna som är de bästa... Att man inte lärt sig det än

Senast redigerat 2007-06-15 08:56
  • Medlem
  • International user
  • 2007-06-15 09:28

Analysera alltid plisten innan du slänger det. Man kan faktiskt lära sig otroligt mycket genom att studera den. Oftast "säger det klick" när man gjort det. Som Knugen hade sagt...

  • Medlem
  • 2007-06-15 12:42

Inställningen för vad som händer med terminalen när den avslutats finns under menyn "Treminal / Fönsterinställningar".

Under "Shell" (eller står det "Skal" på svenska?)

/P

1
Bevaka tråden