por que o comando “open” é executado no diretório inicial?

1

No Mac OSX (Mountain Lion), tenho um script de shell "a":

#!/bin/bash
open -a Terminal b

que executa outro script de shell "b" usando o Terminal:

echo 'pwd'

Algo interessante é que, independentemente de onde meus scripts em execução estão localizados, o comando pwd em "b" sempre retorna o diretório inicial.

Perguntas:

  1. Por que isso acontece?
  2. Como definir o ambiente de execução como o diretório inicial de trabalho (ou seja, retornar o diretório de trabalho ao chegar em pwd )
por Hailiang Zhang 23.08.2013 / 00:22

1 resposta

1

open -a Terminal b é como abrir b no Terminal do Finder. Ele diz ao LaunchServices para abrir b no Terminal e não passa nenhuma informação sobre o ambiente atual.

Você pode usar cd "$(dirname "$0")" para acessar o diretório do script.

Se você quiser executar o script em uma nova janela do Terminal, poderá usar o AppleScript:

osascript -e 'tell app "Terminal" to do script "cd " & quoted form of (system attribute "PWD") & "; ~/bin/b"'

    
por 23.08.2013 / 04:40

Tags