編集:$ HOME / .binと言ったところで$ HOME / binを作成したか、それと同等の内容が機能しなければなりませんでした。 IE、ユーザーの PATH のユーザー書き込み可能ディレクトリ。
そのため、APIクライアントとしてデプロイするbashスクリプトがあります。現在のバージョンは次のようにインストールされますcurl -s http://api.blah.com/install | sudo sh
。おそらく6つの異なるパッケージ管理システムを処理して、特定の時点でのみ機能するように努力しますapt-get
。brew install
しかし、今はこのソリューションが複数のシステムで動作したいので、1行を使用します。しかし、sudoがまったくない場合や、cygwinやMacなどのシステムにsudoが設定されていないユーザーもかなり多いです。
シナリオは、ユーザーが自分のAPIに参加してクレジットカード情報を入力することです。リファレンス実装とAPIを試してみるか、コマンドラインを使用して仮想マシンとDockerコンテナをデプロイする方法として使用されるAPI用のbashクライアントがあります。ユーザーがAPIクライアントを簡単にインストールできる方法を作成したいと思います。
たとえば、npmは1行のインストールでしたcurl http://npmjs.org/install.sh | sh
。 Homebrewには1行のインストーラもありますruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
(参照:http://brew.sh)。
私のインストールスクリプトはAPIクライアントスクリプトをダウンロードして/usr/binに保存し、実行可能にします。しかし、sudo関連の問題とグローバルインストールが実際には必要ないという事実に基づいて、ユーザーの$ HOME / .binまたは$ HOME / local / binにインストールしたい(既存のファイルがない場合は作成)。等しい)。
これは私の現在のインストールスクリプトです。
#!/bin/bash
BASE="https://api.blah.com"
sudo bash -c "curl -s $BASE/mycmd > /usr/bin/mycmd"
sudo chmod uga+x /usr/bin/mycmd
私の最初の考えは、現在多くのユーザーがzshを使用していることです。したがって、$ HOME / .binを含むようにPATHを更新するために〜/ .bashrcに行を追加または変更すると、これらのシステムでは機能しません。
だから質問をもう一度申し上げると、そのユーザーの PATH ($HOME/local/bin またはデフォルトで PATH で使用できるすべての項目) のユーザー書き込み可能ディレクトリにスクリプトをダウンロードしてインストールし、そのスクリプトがその PATH にあることを確認し、要件を使用するには、どのコードを使うべきですか? (または少なくともUnixプロンプト(sudoは不要)のようなものがある場合は、ほぼすべての人のシステムで動作するという強い欲求)?
一部の人はPATHを変更するのが悪いと思うので、特定のパスディレクトリを含めるようにPATHを自動的に変更するのではなく、可能であればすでにユーザーのPATHにあるそのシステムのデフォルトの$ HOME / whatever / binにインストールしたいと思います。
とても感謝しています!
ベストアンサー1
あなたの環境に自分自身を注入するプログラムを指す言葉があります:ウイルス。
単に ~/bin/ (手動インストールスクリプトの歴史的事実上標準) または ~/.local/bin/ (ルート以外のパッケージマネージャがインストールしたスクリプトの最新の竣工標準) にインストールするだけです。通常、ユーザーフレンドリーなディストリビューションには、すでに $PATH にこれらのいずれかまたは両方があります。
あるいは、より良い方法は、インタラクティブにユーザーにインストールプレフィックスを求めるメッセージを表示することです。