In meinem ~/.bashrc
habe 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 brew
oder 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_aliases
Shell-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 emacs
jedoch 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, .R
die an den Befehl übergeben wird
Antwort4
Nehmen wir an, ich habe eine ausführbare Datei namens python3.6
im 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,