Iniciando o Terminal.app no diretório de trabalho

3

Eu configurei um script que inicia o terminal com este comando bash:

open script.command

script.command é um script Perl e é executado muito bem. (Isso pode parecer um pouco confuso, mas é a única maneira que encontrei para agrupar um script com uma linha de comando interativa em um aplicativo comum criado pelo Platypus.) O único problema é que o diretório de trabalho do script é sempre meu diretório pessoal, independentemente de onde o comando acima foi executado. O mesmo também se aplica a open -a Terminal .

Eu tentei fazer isso:

open script.command --args "'pwd'"

que deve funcionar tecnicamente (usando o argumento em chdir ), mas o argumento não é passado para o script perl ( script.command ).

O Terminal tem alguma opção de linha de comando que eu desconheço?

    
por vbwx 06.05.2012 / 18:45

2 respostas

3

O método que você descreve não funciona porque os argumentos são passados para o Terminal (que os ignora) e não para o interpretador de script do script.

Em vez disso, você pode usar o AppleScript para tornar o Terminal primeiro cd no diretório correto e, em seguida, abrir o script interativo. Substitua o open script.command por osascript launchscript.scpt "$PWD" >/dev/null .

No Editor AppleScript, crie um script com o seguinte conteúdo:

on run argv
    tell application "Terminal"
        activate
        do script "cd " & quoted form of item 1 of argv & " ; ./script.command"
    end tell
end run

Salvar como launchscript.scpt e incluir como recurso no Platypus.

Isso abre uma janela do Terminal que primeiro cd no diretório de trabalho do script principal (o Contents/Resources do seu aplicativo Platypus) e só então executa script.command .

    
por 06.05.2012 / 19:19
2

Acontece que eu negligenciei uma técnica muito mais fácil.

O script principal não precisa ser alterado:

open script.command

E o começo de script.command agora é assim:

#!/usr/bin/perl

use File::Basename;
chdir(dirname($0));

Claro, isso só funciona dentro dos limites do script Perl, portanto, em casos mais complexos, a solução AppleScript é o caminho a ser seguido.

    
por 07.05.2012 / 15:32