フルパスの提供は機能しませんが、プログラム名だけを呼び出すと機能します。なぜですか?

フルパスの提供は機能しませんが、プログラム名だけを呼び出すと機能します。なぜですか?

私は何を見逃していますか?コマンドラインから "rvm"を呼び出すことはできますが、which rvm使用中のフルパスを引用することはできません。

関係はありませんが、常に「jenkins」としてログインしており、コマンドは引き続き実行されます。

$ whoami
jenkins

RVMはここにあります

$ which rvm
/home/jenkins/.rvm/bin/rvm

これは効果があります

$ rvm use 1.8.7
Using /home/jenkins/.rvm/gems/ruby-1.8.7-p370
Running /home/jenkins/.rvm/hooks/after_use

しかし、これはうまくいきません

$ /home/jenkins/.rvm/bin/rvm use 1.8.7
RVM is not a function, selecting rubies with 'rvm use ...' will not work.
You need to change your terminal settings to allow shell login.
Please visit https://rvm.io/workflow/screen/ for example.

はい、参照されたリンクにアクセスしましたが、それが私にどのように適用されるかわかりません。

答え1

which rvmという実行ファイルを探しますrvm。実行ファイルは、実行時に単に「RVMは関数ではありません...」というメッセージを出力します。

rvmこれはシェルの関数でもエイリアスでもかまいません。これはあなたのファイル~/.bashrc(システム全体/etc/bash.bashrcまたは含まれているファイルのいずれか)で定義されています。rvmコマンドが何であるかを確認するには、またはtype rvmを実行しますcommand -v rvm

また、見ることができますwhichaliasコマンドで使用する方法は?

答え2

rvm useどのバージョンのRubyを使用するかを示すために、環境変数を変更して作業してください。これは関数として実行された場合にのみ実行できます。フルパスまたは未定義の機能を使用してコマンドとして実行すると、機能しません。これは、別のプロセスとして実行されると、プロセスに独自の環境コピーがあるためです。このコピーは変更されますが、プロセスが終了するとすぐに失われます。

答え3

追加しました。

#!/bin/bash --login 

台本序盤はハドソンで働いていました。今、すべてがうまくいきます! :)

関連情報