Was ist die korrekte Art, Anwendungen in OS X über Bash zu aliasen?

Was ist die korrekte Art, Anwendungen in OS X über Bash zu aliasen?

In meinem ~/.bashrchabe ich mehrere Aliase wie:

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

Ich glaube nicht, dass das der richtige Weg ist. Die Aliase funktionieren nicht innerhalb von Bash-Skripten, und wenn etwas über brewoder installiert wird apt-get, wird kein solcher Alias ​​erstellt.

Wie geht man dabei richtig vor?

Antwort1

Aliase funktionieren in Shellskripten konstruktionsbedingt nicht. Andernfalls alias rm='rm -i'würden die meisten Shellskripte durch eg beschädigt.

Um sie trotzdem zu aktivieren, setzen Sie die expand_aliasesShell-Option.


Sie können Softlinks für diese ausführbaren Dateien in einem Verzeichnis auf Ihrem Computer erstellen $PATH:

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

Geben Sie dann einfach den neuen Befehlsnamen ein, z. B. aquamacs, um sie auszuführen.

Dadurch können Sie diese Befehle unabhängig von Ihrer Shell verwenden.


Beachten Sie, dass Sie normale OS X-Anwendungen auf nicht blockierende Weise öffnen können open -a ProgramName, z. B. open -a Aquamacs. Dabei wird die Programmdatenbank von Launch Services verwendet (die z. B. die Auswahl von Programmen zum Öffnen einer bestimmten Datei mit einem nicht standardmäßigen Editor bereitstellt) und weiß, wo die Anwendungen installiert sind.

Antwort2

Das ist die richtige Vorgehensweise, nur für einen anderen Wert von „it“ als den, den Sie erreichen möchten. (Alias ​​ist im Wesentlichen nur für die interaktive Verwendung gedacht.)

Zum Öffnen eines App-Pakets auf dem Mac verwenden Sie open -a ${appname}. Sie könnten/sollten also Ihren Emacs-Alias ​​durch alias emacs='open -a aquamacs'und Ihr Inkscape durch ersetzen open -a wine '/Users/hpek/.wine/...'.

Sie erhalten emacsjedoch eine direkt ausführbare Binärdatei, indem Sie etwas mit diesem Namen in Ihrem haben $PATH. Ich tendiere zu kleinen Skripten:

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

Dadurch wird die Anwendung auf die „Mac“-Art geöffnet, alle Befehlszeilenargumente werden durch sie geleitet und sie kann von überall aus ausgeführt werden, auch von anderen Prozessen.

Wenn Sie sich jedoch nur für die Shell interessieren, sind Shell-Funktionen „normaler“ als Aliase, da sie in Bash unter mehr Umständen ausgelöst werden können:

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

Antwort3

Eine einfache Lösung besteht darin, den folgenden Befehl hinzuzufügen .bash_profile:

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

Dadurch kann das Programm RStudio jede vorhandene Datei öffnen, .Rdie an den Befehl übergeben wird

Antwort4

Nehmen wir an, ich habe eine ausführbare Datei namens python3.6im Ordner:

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

Dann kann ich Folgendes tun:

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

Beachten Sie das /./am Ende,

verwandte Informationen