プログラムを実行し、出力をテキストフィールドに返すバイナリ実行プログラムコマンドを開発しています。
コマンドのパラメータには、コマンド自体(コマンドラインに入力)とディレクトリが含まれます。したがって、操作を実行するルーチンは最初にディレクトリに切り替えてからコマンドを実行します。
some.cmd
たとえば、ディレクトリからコマンドを実行したい場合、/home/user
パラメータはとcommand = 'some.cmd'
ですdirectory = '/home/user'
。
私はこれがsome.cmd
うまくいきませんでしたが、コマンドをこれに変更するとうまく/home/user/some.cmd
いきました。ただし、コマンドはls -l
機能します。また、cd
コマンドが認識されないことがわかりました。ssh
setupコマンドでリモートで実行するとssh user@localhost 'cd /home/user && ./some.cmd'
機能します。
シェルでコマンドを実行したときに存在するいくつかの設定が直接実行されるときは存在しないようですが、実行すると動作ssh
できる設定が生成されるようです。
これについての説明はありますか?
修正する:
いくつかの質問の最後に、コマンドを実行するために使用されるAPIが、シェルまたはコンソールによって提供される一般的な環境では実行されないことがわかりました。オプションを指定してコマンドを実行した後、/bin/sh -c "cd ..."
問題はもう存在しませんでした。これが私に与えられた環境ですssh user@localhost 'command ...'
。技術的な詳細はよくわかりませんが、通常のシェルで実行するときに使用できる環境が、オペレーティングシステムで直接実行されるコマンドに常に使用できるわけではありません。
ベストアンサー1
ファイルを実行しようとすると、システムはファイルを見つける方法を知る必要があります。そのため、フルパスを指定すると機能します。シェルには、PATH
実行可能ファイルを見つけるためにディレクトリのリストを保存する環境変数もあります。そのため、フルパスを指定する必要はありませんls
。