web-dev-qa-db-ja.com

bashを介してOSXでアプリケーションのエイリアスを作成する正しい方法は何ですか?

私の~/.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を介して何かをインストールする場合、このようなエイリアスは作成されません。

これを行う正しい方法は何ですか?

2
hpekristiansen

エイリアスは、設計上、シェルスクリプトでは機能しません。それ以外の場合、例: alias rm='rm -i'はほとんどのシェルスクリプトを壊します。

とにかくそれらを有効にするには、expand_aliasesシェルオプションを設定します。


これらの実行可能ファイルのソフトリンクは、$PATHのディレクトリに作成できます。

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

次に、新しいコマンド名を入力します。例: aquamacs、それらを実行します。

これにより、シェルとは関係なくこれらのコマンドを使用できるようになります。


通常のOSXアプリケーションの場合、それらを開くための非ブロッキング方法はopen -a ProgramNameであることに注意してください。 open -a Aquamacs。 Launch Servicesのプログラムデータベース(デフォルト以外のエディターで特定のファイルを開くためのプログラムの選択を提供するデータベースなど)を使用し、アプリケーションがインストールされている場所を認識します。

6
Daniel Beck

それはあなたが達成したいものとは異なる「それ」の価値のためだけに、それを行う正しい方法です。 (エイリアスは、ほとんどインタラクティブに使用するためのものです。)

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
Daniel Pittman

フォルダー内にpython3.6という実行可能ファイルがあるとします。

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

それから私はすることができます:

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

最後の/./に注意してください。

1
clankill3r

簡単な解決策は、.bash_profileに次のコマンドを追加することです。

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

これにより、プログラムRStudioは、コマンドに渡された既存の.Rファイルを開くことができます。

1
naturofix