GNU/Linux >> Linux の 問題 >  >> Linux

ビンにプログラムを作成する

パスを指定せずにバイナリを実行できるようにする方法は 2 つあります (絶対パスを使用してバイナリを実行するためのエイリアスやシェル関数の作成は含まれません)。

<オール>
  • $PATH 内のディレクトリにコピーします .
  • あるディレクトリを $PATH に追加します .
  • /usr/local/bin など、パス内のディレクトリにファイルをコピーするには (ローカルで管理されているソフトウェアが必要な場所)、通常は sudo を使用することを意味するスーパーユーザー権限が必要です。 :

    $ sudo cp -i mybinary /usr/local/bin
    

    ターゲット ディレクトリ内の既存のファイルを上書きしないように注意する必要があります (これが -i を追加した理由です)。

    ディレクトリを $PATH に追加するには 、 ~/.bashrc に行を追加します ファイル (bash を使用している場合) ):

    PATH="$HOME/bin:$PATH"
    

    ... バイナリが $HOME/bin の場合 .

    これには、スーパーユーザー権限を持ったり、マシンの基本システムで何かを変更/追加したりする必要がないという利点があります。バイナリを bin に移動するだけです ホーム ディレクトリのディレクトリ。

    .bashrc への変更に注意してください 次回ファイルが読み込まれたときに有効になります。これは、新しいターミナルを開くか、ログアウトしてから再度ログインするか、 source ~/.bashrc を実行した場合に発生します


    PATH 変数の詳細を読む必要があります。適切に使用 (または変更) する必要があると強く思います。

    <ブロック引用>

    binディレクトリに入れられるようにしたい

    /bin/のことだと思います または /usr/bin/ .そこに独自のプログラムを追加するのが賢明かどうかはわかりません。おそらく、それらの中にシンボリックリンクを配置する方が良いでしょう (例:ln -sv $(realpath foobar.out) /usr/bin/ のようなものを使用) )、あなたのプログラムを絶対にそこに表示したい場合 (ディストリビューションのパッケージ マネージャーを台無しにしているので、これはおそらく間違いです)。

    おそらく /usr/local/bin/ にプログラムをインストールします はるかに賢明です (/bin/ の両方を残す方が賢明です) と /usr/bin/ Linux ディストリビューションによって提供および管理されているとおりです)。 LSB を参照し、ファイル階層標準の詳細をお読みください。

    <ブロック引用>

    ... システム全体のコマンドのように .... cd など

    これはあなたの部分の強い誤解です (あなたの質問の元の変形では、あなたは正しく cd を削除しました) 後で)。 cd は実行可能ファイルではありませんし、実行可能ファイルにすることもできません。これはシェルの組み込みコマンドです (また、実行可能にする必要があります)。

    自由にダウンロードできる Advanced Linux Programming を読むことをお勧めします。 cdの理由を理解する 実行可能ファイルにすることはできません (現在の作業ディレクトリは各プロセスの状態の一部であり、すべてのプロセスには独自のディレクトリがあり、chdir(2) を使用して変更できます...)


    install /path/to/oobar.out /usr/local/bin/
    

    Linux
    1. Python – / usr / bin / envはどのプログラムを使用するかをどのように知っていますか?

    2. 既知のパスにある名前不明のディレクトリへのCd?

    3. Cで新しいディレクトリを作成する

    1. シェル プログラムで相対パスか絶対パスかを判断する

    2. 一度に完全なディレクトリ ツリーを作成する

    3. 致命的なエラー:cuda.h:そのようなファイルまたはディレクトリはありません

    1. Linux でパスを置き換えるショートカットを追加できますか?

    2. 現在のディレクトリを名前でコピーするRsync

    3. PATH にあるプログラムに対して Bash が No such file or directory を与えるのはなぜですか?