したがって、Debian サーバーに実行可能ファイルがあり、実行可能ファイルがありますが、/home/human/ExecuteIt
まだ別の場所で実行可能ファイルを実行する方法がわかりません。私が知っている限り、そうです/home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/
。
通常、構成フォルダーが1つある場合は、実行可能ファイルをコピー/貼り付けてを使用して正常に実行できますが、実行可能ファイルには構成が異なる複数の構成/home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/
フォルダーsudo chmod +x ./executable
があります。
コピー/ペーストせずに実行可能ファイルを分離して別の構成で実行できることをお勧めします。私の実行可能ファイルを別の場所で実行する方法はありますか?
答え1
実行可能ファイルが相対パスから構成をインポートする場合、そのパスはpwd
(現在の作業ディレクトリ)に相対的です。だから:
> cd /there/locA
> pwd
/there/locA
> /there/stuff/executable
実行ファイルは locB に基づいて検索されます。今:
> cd /there/locB
> pwd
/there/locB
> /there/stuff/executable
実行ファイルは locB に基づいて検索されます。
パスワードがlocBのときに実行可能ファイルを実行したいが、魔法のようにlocBから設定をインポートしたい場合は、実行可能ファイルにコマンドを追加してラインパラメータを呼び出すことが唯一の方法です。または、カスタム環境変数を使用します。単に実行可能ファイルをlocAにコピーしてからパスワードが機能しないので、locAを使用したいと思うので、具体的にはlocBから実行可能ファイルを呼び出そうとします。パスワードはまだlocBです。
個々のコマンドに対して$ PWDを設定することを確認しました。
> PWD=/there/locA bash -c 'echo $PWD'
/there/locB
動作しません。そのため、パスワードを偽装できない可能性があります。
答え2
ご質問がわかりませんでしたので、ご理解いただいた内容を再度ご説明いたします。プログラムと同じディレクトリで構成ファイルを検索するプログラムがあります。たとえば、 を実行すると、 で/home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/executable
構成ファイルを探します/home/human/ExecuteIt/FolderWithConfiaguration/Configuration1
。たとえば、さまざまな構成でプログラムを実行できるようにしたいと思います/home/human/ExecuteIt/FolderWithConfiaguration/Configuration2
。そして、プログラムのコピーを複数作成したくありません。
あなた(あなた)はできます。シンボリックリンク複数のディレクトリの実行可能ファイルにアクセスし、すべてのパブリックファイルへのシンボリックリンクを作成します。たとえば、プログラムに実行可能ファイルexecutable
、データファイルdata
、構成ファイルという3つのファイルが必要であるとしますconfig
。/home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/config
には2つの異なる構成があります
/home/human/ExecuteIt/FolderWithConfiaguration/Configuration2/config
。実行可能ファイルとデータファイルのコピーの両方があります/home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/
。そして/home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/executable
ディレクトリにシンボリックリンクを作成し、への/home/human/ExecuteIt/FolderWithConfiaguration/Configuration2/
シンボリックリンクも作成します/home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/data
。
cd /home/human/ExecuteIt/FolderWithConfiaguration/Configuration2
ln -s ../Configuration1/executable ../Configuration1/data
シンボリックリンクは、システムに物理ファイルを別の場所で検索するように指示します。それ自体にはデータが含まれていないため、実行可能ファイルまたは実行可能ファイルからデータを更新すると、Configuration1
これはすべての構成に適用され、ファイルのコピーは1つしかないため、追加の構成には構成ファイルのディスク容量のみが必要です。
このようにして実行されるほとんどのプログラムは、データと構成ファイルを見つけるときに実行可能ファイルの場所を検討します。シンボリックリンクを使用している場合、この方法は機能しません。代わりに、以下を作成できます。ハードリンク。ハードリンクは、同じファイルへの複数のパスです。ファイルへのすべてのハードリンクは同じです。
cd /home/human/ExecuteIt/FolderWithConfiaguration/Configuration2
ln ../Configuration1/executable ../Configuration1/data
これにより、パスで指定されたすべてのファイルを更新する必要があるため、ファイルの更新がより困難になります。さらに、同じファイルへのすべてのハードリンクは同じファイルシステムに存在する必要があります。