2017-12-11 4 views
0

サーバにsshを実行すると、PATH変数が必要に応じて設定されていることがわかりました。

Javaでcom.jcraft.jsch.JSchライブラリを使用して同じサーバーに接続しようとすると、PATHが別のものに設定されます。 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

これはデフォルト値のようであり、必要に応じてカスタムフォルダは含まれません。実行可能ファイルへの完全なパスを渡さない限り、Java経由で接続するときに必要なコマンドはありません。私は別のサーバーに接続する必要があり、別の場所にある実行可能ファイルでセットアップされるかもしれないので、これはオプションではありません。

Javaを使用して接続すると./bashrcファイルが実行されない理由を知りたいと思っていました。手動で実行する必要がありますか?

ありがとうございます。

+0

スタックオーバーフローは、プログラミングおよび開発に関する質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[スーパーユーザ](http://superuser.com/)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)の方が良いかもしれません。 – jww

+1

Javaでプログラミングしているので、ここに投稿しました。私はJava APIを使用してsshに接続しようとしていますが、sshを使用して接続するときと同じように動作しません。私はJavaの経験を持つ人がこれを手伝うことができると思った。 – clinomaniac

答えて

0

コマンドラインSSHを使用して接続する場合は、あなたの「デフォルトのコマンドは、」リモートマシン(あなたがchshで変更することができ、おそらくbash、)でユーザー名のために設定されているものは何でもシェルで、その後、bash輸入あなた.bashrcファイル。

JSchを使用して接続すると、開かれたChannelのタイプによって、接続で何が行われるかが決まります。 JSchの仕組みについて私が理解しているところから、JSchはSSHセッションを開くときにbashを開いていない可能性があります。

SSHデーモンが許可するように設定されている場合は、一般的には、~/.ssh/environmentを使用して、.bashrcの代わりにPATHを設定してみてください。これはSSHがシェルを含むコマンドを実行する前に常にインポートされるので、PATHの設定がより信頼できます。

this Unix StackExchange post.bashrcPATH、およびSSHについては、私の答えのいくつかの選択肢があります。

関連する問題