私はC ++でプログラムをコンパイル、リンク、作成しました。
foobar.out
私はそれをbinディレクトリに入れて、システム全体のコマンドのように使用できるようにしたいです。
ssh, echo, bash, cd...
どうすればいいですか?
答え1
パスを指定せずにバイナリを実行するには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
新しい端末を開いたり、ログアウトしてから再度ログインしたり、手動で実行した場合に適用されます。
答え2
あなたはについてもっと読む必要があります道変える私はあなたがそれを適切に使用(または変更)する必要があると強く思います。
binディレクトリに入れることができるようにしたいです。
おそらくあなたは/bin/
または/usr/bin/
。そこに自分のプログラムを追加するのが賢明かどうかはわかりません。ln -sv $(realpath foobar.out) /usr/bin/
プログラムがそこに表示されることを絶対にしたい場合(IMHOこれはおそらくディストリビューションを台無しにしたためにバグになるでしょう)、おそらくその中にシンボリックリンクを置く方が良いでしょう(たとえば、このようなものを使用)パッケージマネージャ)。
プログラムを次の場所にインストールする方が/usr/local/bin/
賢明です(あなたが提供し管理することをそのままにしてください)/bin/
。/usr/bin/
Linuxディストリビューション)。バラより最下位ビット詳しくはこちらファイル階層標準。
...次のようなシステム全体のコマンドと同じです...
cd
これはあなたの部分の深刻な誤解です(cd
後で質問の元のバリエーションから正しく削除されました)。cd
そうでなくてもそうではありません。実行可能ファイル、これはシェルの組み込みコマンドです(必ずそうする必要があります)。
無料でダウンロードできる内容を読んでみたい場合もあります。高度なLinuxプログラミングcd
ファイルを実行できない理由を理解する(現在タスクリストすべてのプロセス状態の一部であり、すべてのプロセスには独自の状態があり、次のコマンドを使用して変更できます目次(2)...)
答え3
install /path/to/oobar.out /usr/local/bin/
答え4
@Kusalanandaが許可する答えを追加したいです。 $ HOME / binにホームブルースクリプトとプログラムを配置するもう1つの利点は、システムをアップグレードするときにその内容を失わないことです。個人用ツールボックスを管理し、携帯性を向上させるより良い方法です。