Как правильно создавать псевдонимы приложений в OS X через bash?

Как правильно создавать псевдонимы приложений в OS X через bash?

В моем ~/.bashrc, у меня есть несколько псевдонимов, таких как:

alias emacs='/Applications/Aquamacs.app/Contents/MacOS/Aquamacs'
alias octave='/Applications/Octave.app/Contents/Resources/bin/octave'
alias wine='/Applications/Wine.app/Contents/Resources/bin/wine'
alias simion='wine "/Users/hpek/.wine/drive_c/Program Files/SIMION 8.0/simion.exe"'
alias inkscape='wine "/Users/hpek/.wine/drive_c/Program Files/Inkscape/inkscape.exe"'

Я не думаю, что это правильный способ. Псевдонимы не работают из скриптов bash, и при установке чего-либо через brewили apt-get, он не создает такой псевдоним.

Как правильно это сделать?

решение1

Псевдонимы не работают в скриптах оболочки по умолчанию. В противном случае, например, alias rm='rm -i'сломается большинство скриптов оболочки.

Чтобы включить их в любом случае, установите expand_aliasesопцию оболочки.


Вы можете создать программные ссылки для этих исполняемых файлов в каталоге на вашем компьютере $PATH:

ln -s /Applications/Aquamacs.app/Contents/MacOS/Aquamacs /usr/bin/aquamacs

Затем просто введите новое имя команды, например aquamacs, , чтобы запустить ее.

Это позволит использовать эти команды независимо от вашей оболочки.


Обратите внимание, что для обычных приложений OS X неблокируемый способ их открытия — это open -a ProgramName, например open -a Aquamacs, . Он использует базу данных программ Launch Services (ту, которая, например, предоставляет выбор программ для открытия определенного файла с помощью редактора, отличного от редактора по умолчанию) и знает, где установлены приложения.

решение2

Это правильный способ сделать это, просто для другого значения «этого», нежели то, чего вы хотите достичь. (Псевдоним предназначен только для интерактивного использования, в общем-то.)

Чтобы открыть пакет приложений на Mac, используйте open -a ${appname}, поэтому вы можете / должны заменить свой псевдоним emacs на alias emacs='open -a aquamacs', а свой inkscape на open -a wine '/Users/hpek/.wine/...'.

Однако способ получить непосредственно исполняемый emacsдвоичный файл заключается в том, чтобы иметь что-то названное буквально так же, как в вашем $PATH. Я склоняюсь к маленьким скриптам:

#!/bin/sh
exec /usr/bin/open -a octave "$@"

Это открывает приложение способом «Mac», передает через него все аргументы командной строки и делает его исполняемым из любого места, включая другие процессы.

Однако если вас интересует только оболочка, то функции оболочки более «обычны», чем псевдонимы, в том смысле, что их можно вызывать в большем количестве ситуаций в bash:

function octave() { /Applications/Octave.app/.../bin/octave "$@"; }
function octave() { open -a octave "$@"; }

решение3

Простое решение — добавить следующую команду .bash_profile:

alias rstudio='open -a /Applications/RStudio.app/Contents/MacOS/RStudio "$@"'

Это позволит программе RStudio открыть любой существующий .Rфайл, переданный команде

решение4

Допустим, у меня есть исполняемый файл, который называется python3.6внутри папки:

/Users/doekewartena/.pyenv/versions/3.6.0/bin/

Тогда я могу сделать:

alias python36='/Users/doekewartena/.pyenv/versions/3.6.0/bin/./python3.6'

ОБРАТИТЕ ВНИМАНИЕ на то, что /./в конце,

Связанный контент