Qual é a maneira correta de alias de aplicativos no OS X através do bash?

2

No meu ~/.bashrc , tenho vários alias como:

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"'

Eu não acho que este é o caminho certo para fazê-lo. Os aliases não funcionam nos scripts bash e, ao instalar algo através de brew ou apt-get , ele não cria um alias como este.

Qual é a maneira correta de fazer isso?

    
por hpekristiansen 05.02.2012 / 22:26

4 respostas

5

Os aliases não funcionam no shell script por design. Caso contrário, por exemplo, alias rm='rm -i' quebrará a maioria dos scripts de shell.

Para ativá-los mesmo assim, defina a opção expand_aliases shell.

Você pode criar softlinks para esses executáveis em um diretório no seu $PATH :

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

Em seguida, basta digitar o novo nome do comando, por exemplo aquamacs , para executá-los.

Isso permitirá o uso desses comandos independentemente do seu shell.

Observe que, para aplicativos regulares do OS X, uma maneira não-bloqueante de abri-los é open -a ProgramName , por exemplo, %código%. Ele usa o banco de dados do programa Launch Services (o que fornece, por exemplo, a seleção de programas para abrir um determinado arquivo com um editor não padrão) e sabe onde os aplicativos estão instalados.

    
por 05.02.2012 / 22:28
3

Esse é o caminho certo para fazê-lo, apenas por um valor diferente de "it" para o que você deseja alcançar. (alias é apenas para uso interativo, praticamente).

A maneira de abrir um pacote de aplicativos no Mac é usar open -a ${appname} , então você pode / deve substituir seu alias do emacs por alias emacs='open -a aquamacs' e seu inkscape com open -a wine '/Users/hpek/.wine/...' .

A maneira que você tem um binário emacs diretamente executável, porém, é ter algo com o nome literalmente em $PATH . Eu tenho tendência para scripts minúsculos:

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

Isso abre o aplicativo do modo "mac", passa todos os argumentos da linha de comando através dele e é executável de qualquer coisa, incluindo outros processos.

Se você se importa apenas com o shell, porém, as funções do shell são mais "normais" do que os aliases, pois podem ser acionadas em mais circunstâncias no bash:

function octave() { /Applications/Octave.app/.../bin/octave "$@"; }
function octave() { open -a octave "$@"; }
    
por 05.02.2012 / 22:31
0

A solução simples é adicionar o seguinte comando em .bash_profile :

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

Isso permitirá que o programa RStudio abra qualquer arquivo .R existente passado para o comando

    
por 03.11.2015 / 15:50
0

Digamos que eu tenha um executável chamado python3.6 dentro da pasta:

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

Então eu posso fazer:

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

AVISO o /./ no final,

    
por 08.09.2018 / 11:25