Итак, у меня есть отличная маленькая функция в моем bash_profile, которая прекрасно работает, когда я вызываю ее из терминала (вместо новой вкладки открывается новое окно Firefox):

    function firefoxNewWindow() {
    /usr/bin/env osascript <<-EOF
    tell application "System Events"
        if (name of processes) contains "Firefox" then
            tell application "Firefox" to activate
            keystroke "n" using command down
        else
            tell application "Firefox" to activate
        end if
    end tell
    EOF
    }

Теперь я создаю текстовый файл и помещаю его на рабочий стол OSX Lion с расширением .command (firefoxNewWindow.command) и помещаю в него следующий текст:

    firefoxNewWindow

Затем я проверяю, что это исполняемый файл, выполнив это:

    chmod a+x desktop/firefoxNewWindow.command

Теперь, когда я дважды щелкаю командный файл на рабочем столе, чтобы запустить его, я получаю эту ошибку:

    ~ >/Users/myname/Desktop/firefoxNewWindow.command ; exit;
    /Users/myname/Desktop/firefoxNewWindow.command: line 1: firefoxNewWindow: command not found
    logout

Итак, почему я получаю команду Not Found, когда функция находится в bash_profile и работает из терминала Terminal? Так как это функция в bash_profile, я предполагаю, что не нужно указывать путь, так как он должен запускаться из любого пути. Любые идеи о том, как сделать эту работу?

Спасибо

1 ответ1

2

Я не знаю , почему функции не будут доступны здесь, даже если ~/.bash_profile добыт. Вы можете проверить это, поместив другую команду в ваш файл .bash_profile и увидев, как она выполняется при запуске файла .command .


Если все, что вам действительно нужно, это иметь элемент с двойным кликом, который запускает эту функцию, откройте Automator.app из Applications/Utilities и создайте новое приложение.

Перетащите Запуск AppleScript из левой панели и вставьте команду AppleScript.

Сохраните его как файл, например, Open Firefox.app , где вы хотите.

Конечно, вы также можете использовать Run Shell Script вместо Run AppleScript, если вам нужны простые команды сценария оболочки.

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