2

В моем ~/.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 он не создает такой псевдоним.

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

4 ответа4

5

Псевдонимы не работают в сценарии оболочки по дизайну. В противном случае, например, 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 (например, предоставляющую выбор программ для открытия определенного файла с помощью редактора не по умолчанию) и знает, где установлены приложения.

3

Это правильный способ сделать это, просто для значения "это", отличного от того, чего вы хотите достичь. (псевдоним просто для интерактивного использования, в значительной степени.)

Чтобы открыть пакет приложений на 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 "$@"; }
1

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

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

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

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

Обратите внимание на //./ в конце,

1

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

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

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

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