.command [vart är jag?]

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1

Hejsan.
Sitter och försöker köra ett script i finder genom att döpa om det till .command, och sedan dubbelklicka.

Problemet är att då scriptet får fart så är det inte i sin egen katalog, utan i hemmakatalogen.
Lägger jag det på en pen-drive t.ex och skriver "ls" i scriptet, så listar den mapparna i hemmamappen.

Hur får man scriptet att veta vilken katalog den befinner sig i?.

(Eftersom det är lös media så är inte katalogen statisk, utan kan ändras.)
//Jago Svensson

Funkar det inte att låta skriptet köra

pwd

och sedan spara resultatet i en variabel som du sedan alltid lägger till framför alla scriptets egna kommandon?

"pwd" visar också min hemmamapp tyvärr, annars en bra ideé.

Kör jag scriptet från terminalen "./script.command"
fungerar det hur bra som helst, men inte då jag startar det via finder.

// Jago

  • Medlem
  • Kiruna
  • 2006-07-05 11:24

Anledningen till att scriptet inte befinner sig i sin ursprungliga katalog är att när du dubbelklickar på det startar Terminal.app och kör sen scriptet, och då hamnar du ju i din hemmamapp.

Du kan göra följande i scriptet (om det är ett bash-script, liknande sätt finns för övriga) för att hamna rätt:

cd `dirname $0`

eller om du vill ha katalognamnet i en variabel:

DIR=`dirname $0`
cd $DIR

Om du vill ha ett lite snitsigare sätt att köra ett script från GUI:t än att dubbelklicka på en .command-fil och låta Terminal.app köra det, så titta gärna på ex. Platypus eller OnMyCommand som löser just detta problem på ett bra sätt.

  • Medlem
  • Stockholm
  • 2006-07-24 16:14

eller så kan man ju låta en Automator action köra scriptet. Spara arbetsflödet som Application!

Vänligen, Ylan

  • Medlem
  • International user
  • 2006-07-26 23:17

I dom här fallen så testar jag alltid att göra något liknande det här i början av scriptet:

DUMP_FILE="${HOME}/Desktop/env_dump.txt"
echo "Args: '$0' $*" > $DUMP_FILE
set >> $DUMP_FILE

Allt du behöver veta om körningen, se till att skriva det till filen och kasta bort det eller kommentera bort det när du är klar med det. Sen för övrigt om man debuggar shellscript så rekommenderar jag varmt att lägga till -x.

Ex:

#!/bin/sh -x
1
Bevaka tråden