Какой правильный путь для псевдонимов приложений в 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
, он не создает псевдоним, как это.
Как правильно это сделать?
4 ответа
Псевдонимы не работают в сценарии оболочки по дизайну. В противном случае, например 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 (например, предоставляющую выбор программ для открытия определенного файла с помощью редактора не по умолчанию) и знает, где установлены приложения.
Это правильный способ сделать это, просто для значения "это", отличного от того, чего вы хотите достичь. (псевдоним предназначен только для интерактивного использования.)
Чтобы открыть пакет приложений на Mac, нужно использовать open -a ${appname}
, так что вы можете / должны заменить псевдоним emacs на alias emacs='open -a aquamacs'
и ваш чернильный с 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 "$@"; }
Простое решение - добавить следующую команду в .bash_profile
:
alias rstudio='open -a /Applications/RStudio.app/Contents/MacOS/RStudio "$@"'
Это позволит программе RStudio открывать любые существующие .R
файл передан команде
Допустим, у меня есть исполняемый файл под названием python3.6
внутри папки:
/Users/doekewartena/.pyenv/versions/3.6.0/bin/
Тогда я могу сделать:
alias python36='/Users/doekewartena/.pyenv/versions/3.6.0/bin/./python3.6'
Обратите внимание на /./
в конце,