$ PATHと実行可能ファイルの問題


8

生成したディレクトリにUNIX実行可能ファイルがあります。$PATHUNIX実行可能ファイルが実行可能になるように、このディレクトリを取得する必要があると思いますが、ソースコードのドキュメントには、シェル構成ファイルを編集$home/meme/binしてシェルのパスに追加する必要があると記載されています。

回答:


10

コマンドラインにプログラムの名前を入力してプログラムを実行できるようにするには、プログラムの実行可能ファイルがPATH環境変数にリストされているディレクトリのいずれかにある必要があります。次のような変数の現在の値を確認できます($はプロンプトで、以下の値は例です)。

$ echo $PATH
/home/drbunsen/bin:/usr/local/bin:/usr/bin:/bin

いくつかの選択肢があります。#1と#2はそれほど高度ではない概念を含みますが、実際にはあまり作業しない#3をお勧めします。

  • 実行可能ファイルは、すでににあるディレクトリに配置できますPATH。たとえば、/home/drbunsen/binが既ににある場合はPATH、そこに実行可能ファイルを置くことができます。または/usr/local/bin、すべてのユーザーが使用できるようにしたい場合は、実行可能ファイルを置くことができます。
  • 実行可能ファイルがあるディレクトリを追加できますPATH。ファイルを編集します~/.profile~/ファイルがホームディレクトリにあることを意味します)(ファイルが存在しない場合は作成します)。次のような行を追加します。

    PATH=$PATH:$HOME/meme/bin
    

    (それはだ。なお$HOME、ありません$home。UNIXは、一般的に、大文字と小文字が区別されます。また、書き込みができます。~/meme/bin~と同義である$HOME、それはファイルパスの先頭にいたとき。)変更が有効に次回のログイン時間がかかるだろうあなたは、これを入力することができます。ターミナルの同じ行、それはそのターミナルで実行されているシェルとそこから起動されたすべてのプログラムに影響します。

  • 私がお勧めするアプローチは、プログラムの一部である他のファイルと一緒に実行可能ファイルを独自のディレクトリに保持することですがPATH、どちらも変更しないでください。
    実行可能ファイルを保持する$HOME/memeことには、プログラムを削除またはアップグレードする場合にすべてが1か所にあるという利点があります。一部のプログラムでは、使用するファイルを見つけるためにこれが必要です。変更しないことにPATHは、プログラムのインストールとアンインストールが少なくて済むという利点があります。
    両方の長所を活用するには、実際の実行可能ファイルを指すシンボリックリンクをのディレクトリに作成しますPATH。コマンドラインから、次のようなコマンドを実行します。

    cd ~/bin
    ln -s ../meme/bin/* .
    

    それ~/binはすでにあなたにあると仮定していますPATH。そうでない場合は、~/.profile上記のように追加します。必要に応じて、別の場所を選択します。プログラムを利用できるようにすることは、シンボリックリンクを作成することです。それらを使用不可にすることは、シンボリックリンクを削除することの問題です。また、シンボリックリンクを見れば、手動でインストールしたプログラムとその場所を簡単に追跡できます。


Gilles、すごい詳細な説明をありがとう。本当にありがとうございました。時間を割いて詳細に、そしてすべてを明確にするレベルで私の質問に答えてくれてありがとう。
dr.bunsen

私が気付いたもう1つのことは、home / meme /ディレクトリに/ binディレクトリがないように見えることです。ここに自分へのシンボリックリンクを作成できるように、ビンを作成する必要がありますPATHか?ありがとう。
dr.bunsen 2011

@ dr.bunsen ~/binは一般的な場所であり、一部のディストリビューションでは自動的に作成されます。ない場合は、作成してPATH手動で追加する必要があります。場所~/binは慣例にすぎず、必要に応じて別の名前を付けることができます。
Gilles「SO-邪悪なことをやめよう」

ワイルドカードコマンドは機能しません。これは、lnが展開の最後の項目をディレクトリとして解釈するためです: "使用法:ln [オプション] ... [-T] TARGET LINK_NAME(1番目の形式)またはln [オプション] ... TARGET( 2番目の形式)または:ln [OPTION] ... TARGET ... DIRECTORY(3番目の形式)または:ln [OPTION] ... -t DIRECTORY TARGET ...(4番目の形式) "これを解決するために、"- t ./ "
adam.r 2014年

1
@ adam.r ln -s ../meme/bin/* .ではなく、私が書いたln -s ../meme/bin/*。コマンドをコピーするときに1文字抜けていたようです。
Gilles「SO-悪をやめる」
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.