私が何かをコンパイルし、次のように実行したとしましょう。
$ /path/to/my/executable/mycmd
Hello World
実行するにはどうすればよいですか?
$ mycmd
Hello World
私のコンピュータはどこでも?
答え1
あなたが探しているのはPATH
環境変数です。プログラムを見つける場所をシェルに伝えます。次のコマンドを使用して、この変数の現在の値を表示できますecho
。
echo "$PATH"
今...新しいプログラムを使用したい場合は、ディストリビューションのパッケージマネージャを使用してインストールするのが最善です。ただし、この場合は、利用可能なパッケージで提供されていないプログラムを扱っているとします。このタイプのプログラムには2つのオプションがあります。
- システムにインストールされている場所にシステム全体にプログラムをインストールします。いいえパッケージからインストールされているすべてのファイルを配置します。ほとんどのシステムでは、これらの「安全な」フォルダには次の
/usr/local/bin/
ものが含まれます。/opt/bin/
- これらのフォルダはすでにPATH
。間違った自分のプログラムを配置する場所は、リストされている他のフォルダを見てくださいPATH
。 ) 変数を修正してください
PATH
。これは、プログラムを保存できる追加のフォルダを定義し、誰かが自分のプログラムをそこに入れて実行するように欺くことができるため、安全性が低くなります。PATH
以下を使用して変数を一時的に変更できます。export PATH="$PATH:/path/to/your/executable"
(知っている
$PATH
後ろに=
)または上記の行をファイルに追加して.bashrc
永久に作成します(を使用すると仮定bash
)。
答え2
ユーザースクリプト(またはコンパイルされた実行可能ファイル)は通常この~/bin
ディレクトリに保存されます。これにより、パスを指定しなくても実行できます。
ただし、インストールされているパッケージとプログラムによって配置されたスクリプトとスクリプトを混在させたくない場合は、選択した~/bin
ディレクトリにスクリプトを保存してバインドできます~/bin
。~/bin
パスを指定せずに単純な名前を使用して端末で実行します。
一度だけこのコマンドを実行できます(再起動すると効果が消えます)。
mkdir /home/user/.overlay
sudo mount -t overlay overlay -o lowerdir=/home/user/my-scripts-directory,upperdir=/home/user/bin,workdir=/home/user/.overlay /home/user/bin
このコマンドを使用して新しいスクリプトを作成し、ログイン時に自動的に実行し、再起動後にこのバインディングを再マウントできます。
または
永続的にバインドするには、次の行を次に追加しますfstab
。
# bind my scripts to ~/bin
overlay /home/user/bin overlay defaults,lowerdir=/home/user/my-scripts-directory,upperdir=/home/user/bin,workdir=/home/user/.overlay 0 0
以下の方法は以前に使用したことがありますが、私が認識していない欠陥があります:~/bin
実際のフォルダの内容にアクセスできなくなります。だから私はそれを使用しないことをお勧めします。上記の別の方法を見つけましたが、コメントで議論した内容を誤解しないように、この古い方法はここに残します。
このコマンドをワンタイムで実行できます(再起動後の効果は消えます)。
sudo mount --bind ~/my-scripts-directory ~/bin
このコマンドを使用して新しいスクリプトを作成し、ログイン時に自動的に実行し、再起動後にこのバインディングを再マウントできます。
永続的にバインドするには、次の行を次に追加しますfstab
。
# bind my scripts to ~/bin
/home/user/my-scripts-directory /home/user/bin none bind 0 0