パスを指定せずにバイナリを実行できるようにする方法は 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/