В моем ~/.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'
ОБРАТИТЕ ВНИМАНИЕ на то, что /./
в конце,