どこからでもプログラムを実行可能にする方法


76

現在のディレクトリに関係なく、特定のプログラムを実行できるようにするにはどうすればよいですか?/binフォルダー内のプログラムへのシンボリックリンクを作成する必要がありますか?


5
いいえ、シェルのPATH変数を使用する必要があります。
msw

7
個人用~/bin/フォルダを作成し、それをパスに追加し、そのフォルダにどこからでも実行できるようにしたいものへのシンボリックリンクを作成するといいと思います。
狂気

1
実行するバイナリへのフルパスでエイリアスを設定することもできます。
datasmurf

回答:


53

あなただけ入力した場合export PATH=$PATH:</path/to/file>、コマンドラインでそれが唯一のセッションの長さは持続します。

永続的に変更したい場合はexport PATH=$PATH:</path/to/file>、〜/ .bashrcファイルに追加します(最後に問題はありません)。


11
感謝します。私のような初心者の場合は、山かっこ<>を省略することを忘れないでください。そのように:$ PATH:/ your / file / path
SAm

4
また、プログラムファイル名自体をパスに含めないでください。
オリーニーミタロ

23

簡単な答えは、どのディレクトリに関係なくプログラムを実行するには、検索パスにプログラムのディレクトリが必要であるということです。この問題は、プログラムを既にそのパスにあるフォルダーに入れるか、新しいフォルダーをパスに追加することで解決できます-どちらでも機能します。最良の答えは以下に依存します:

このプログラムは、ソースから自分でコンパイルしたダウンロードプログラムですか?

おそらくインストールメカニズムが既にあるでしょう。プログラムをコンパイルしたフォルダーで、rootとして「make install」を実行します

このプログラムは、コンピューターの標準プログラムの一部として利用できるようにするダウンロードプログラムですか?

この種のアプリケーションを標準フォルダーに入れるのは理にかなっています。そのようなプログラムに/ usr / local / binなどのディレクトリを使用することは非常に一般的です。これを行うには、rootアクセスが必要です。

これは、自分用に作成したプログラムであるか、コンピュータに特別な特権がありません。

ホームディレクトリに「bin」というフォルダを作成し、そこにプログラムを配置します。ログインスクリプトを編集して、このフォルダへのフルパスを追加する必要がある場合があります(例:/ usr / home / jeremy / bin)

現在のディレクトリを検索パスに追加することはできますが、すべての新しいプログラムでこれを実行し続ける必要があり、長期的にはより多くの作業が必要になります。


15

/binディレクトリ内のファイルへのリンクを配置することは、複数の理由で行うのに最適ではありません。

  • 実際の実行可能ファイルが一部のユーザーが表示または実行できない場所にある場合、ユーザーはそれを不良リンクまたは機能不全プログラムと見なします。
  • /binディレクトリは、システムを実行するために必要なプログラム(のようなもののために予約されることになっているchmodmkdirなど)。

あなたが実際に実行可能ファイルを配置(インストール)することができ/usr/bin/、さらには/usr/local/bin/。もちろん、その時点でプログラムを手動でインストールしました。ディストリビューションは、プログラムの残りの部分を追跡しません。必要に応じて手動でアップグレードし、必要に応じて手動で削除する必要があります。また、どのパッケージに依存しているのかを知る必要があります(プログラムを既に使用しているように聞こえるので、大事になりますが、一般的には...)。

他のユーザーが使用することを期待するプログラムを設定する場合を除き、それは私が通常行うことではありません:私は自分のホームディレクトリにbinディレクトリを作成し、シェルプロファイルを編集~/bin/してPATH環境変数に追加します。システムの残りの部分から分離されているため、その方法でインストールしたプログラムを追跡する方が簡単です。


6

fooシェルが現在あるディレクトリでコマンドを実行する場合、基本的に2つのオプションがあります。

  1. タイプ./fooシェルプロンプトで。

  2. .ディレクトリ(.「現在のディレクトリ」の名前)をPATH環境変数に追加します。これを行う方法は、使用しているシェルによって異なります。

    • Bourneタイプのシェル(bash、zsh、kshなど)については次のように記述します(詳細については、このページ参照してください)。

      export PATH=$PATH:.
      
    • cshタイプのシェル(tcsh、csh)については次のように記述します(詳細については、このページ参照してください)。

      set path = ( $path .)
      

2.はマルチユーザーシステムのセキュリティリスクであることに注意してください。cdディレクトリに移動する/tmpと、悪意のあるユーザーがlsそこに名前の付いたマルウェアバイナリを作成したと想像してください。


2
ええ、私はオプションがあなたにUnixがあなたに物事をさせようとすることを示すと思う、それは悪い練習とみなされます。追加 また、あなたのパスに、一般的に悪い他の副作用を作成することができます。
Unixの管理者

1

をいじると、PATH誤って悪意のあるプログラムを実行することになります。標準の下の「ローカル」なものをインストールすることである/usr/local(参照FHS。Unixの使用状況を成文化、:少し日付が、それは根拠を与える)、/usr/local/bin通常であるPATHすべてのユーザーのために。

私の「ローカルにインストールされた」プログラムは、いくつかの(bash)エイリアスと組み合わせて$HOME/bin、標準のダンスによって設定されています。./configure --prefix=$HOME ...PATH

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.