3

Я установил скрипт, который запускает терминал с помощью этой команды bash:

open script.command

script.command - это Perl-скрипт, и он прекрасно выполняется. (Это может показаться немного запутанным, но я нашел единственный способ связать скрипт с интерактивной командной строкой в обычном приложении, созданном Platypus.) Единственная проблема заключается в том, что рабочий каталог скрипта всегда является моим домашним каталогом, независимо от того, где была выполнена вышеуказанная команда. То же самое относится и к open -a Terminal .

Я пытался сделать это:

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

который технически должен работать (используя аргумент в chdir), но аргумент не передается скрипту perl (script.command).

Есть ли в Terminal какие-либо параметры командной строки, о которых я не знаю?

2 ответа2

3

Описанный вами метод не работает, потому что аргументы передаются в терминал (который их игнорирует), а не в интерпретатор сценария сценария.


Вместо этого, вы можете использовать AppleScript , чтобы сделать первый терминал cd - диск в нужную директорию , а затем открыть интерактивный сценарий. Замените open script.command на osascript launchscript.scpt "$PWD" >/dev/null .

В редакторе AppleScript создайте сценарий со следующим содержимым:

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

Сохраните как launchscript.scpt и включите в качестве ресурса в Platypus.

Это открывает окно терминала , который будет первым cd в рабочую директорию основного сценария Contents/Resources вашего приложения Platypus) и только затем выполняет script.command

2

Оказывается, я пропустил технику, которая намного проще.

Основной скрипт не должен быть изменен:

open script.command

И начало script.command теперь выглядит так:

#!/usr/bin/perl

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

Конечно, это работает только в пределах скрипта Perl, поэтому в более сложных случаях решение AppleScript является подходящим вариантом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .