2017-05-08 7 views
2

私の宝石にはコマンドがあります:bin/tennis。現在実行するにはcdをgemに入れてbin/tennisを実行する必要があります。私はそれが通常のシェルコマンドのように動作するようにすることが可能ですか?すなわち任意のディレクトリから実行することができる。通常のコマンドのようなどこからでもRubyファイルを(宝石で)実行可能にするには?

+1

あなたは、あなたの質問をしてください明確にすることはできますか? 「コンパイル」とは、ある言語から別の言語に翻訳することを意味します。明らかに、Rubyからコンパイルしたいのですが、 "to"をコンパイルしたいのですか?そして、「どのディレクトリからでも実行できる」とは、編集と関係がありますか?また、「どんな通常のシェルコマンドでも動作させる」という*正確に*あなたは何を意味しますか? –

答えて

1

グローバルに実行可能なものは、$PATH変数(Windowsでは%PATH%)のディレクトリのいずれかにあります。例えば

$PATHは次のようになります。

$ echo $PATH 
/usr/local/opt/rbenv/shims:/Users/casraf/bin:/Users/casraf/bin:/usr/local/heroku/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/opt/fzf/bin 

あなたは:で分離し、このリストにディレクトリを追加することができ、これらの経路のそれぞれは、グローバルコマンドを実行するときに検索されます。

だから、あなたはどちらかでした:

  1. 保存宝石のexecディレクトリにある実行可能ファイルのコピー:

    ln -s /your/bin/file $(ruby -rubygems -e 'puts Gem.dir')

    これは、通常の内、あなたのbinにシンボリックリンクを作成します。 gem実行可能ディレクトリ(すでに$PATHに存在するはずです。追加しない場合は、単に追加してください:

    export PATH=$(ruby -rubygems -e 'puts Gem.dir'):$PATH

    あなたは必ずそれが

  2. または(あなたは非標準のセットアップを持っている場合、あなたはこれを入れるために別のファイルを検索する必要がある場合があります)すべてのターミナルセッションで起こる作るためにあなたの.bashrc.bash_profileでこれを置くことができますちょうどあなたのPATH変数に定期的にパスを追加します。

    PATH=/path/to/gem/bin:$PATH

+0

お返事ありがとうございます、あなたはより詳細な例であなたの答えを明確にしていただけますか?あなたが本当に意味していたことをかなり得ていません:) –

+0

更新されました。 – casraf

関連する問題