1

SSHを使用してサーバー上の対話型シェルにログインし、ログインした後、2つのコマンドを実行したいと思います。

これは機能します:ssh user1@server -t "cd /home/user2; bash --login"

次の作業はありません。

ssh user1@server -t "cd /home/user2; bash --login -c 'source /home/user2/.bashrc'"

ssh user1@server -t "cd /home/user2; bash --login -c source /home/user2/.bashrc"

ssh user1@server -t "cd /home/user2; bash --login source /home/user2/.bashrc"

ssh user1@server -t "cd /home/user2; bash --login; source /home/user2/.bashrc"

-vフラグを指定してsshを呼び出すと、sshセッションが終了する前に次のように表示されます。

debug1: Sending command: cd /home/user2; bash --login -c "source /home/user2/.bashrc"
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0

私はこれが奇妙に見えるかもしれないことを知っています。user1でのみ実行できるソフトウェアを(合法的に)使用できるように、user1としてログインする必要がありますが、個人の.bashrcを実行して、個人の作業ディレクトリで作業したいと考えています。/home/user1/.bashrcを変更できません。私がやろうとしていることをするためのより良い方法はありますか?

4

1 に答える 1

3

私は何かが欠けているかもしれませんが、述べられた目標を達成するために:

  1. user1としてログインします
  2. 作業ディレクトリをuser2のホームに設定します
  3. user2からのソース.bashrc

言うだけで十分です

ssh user1@server -t "cd /home/user2; bash --rcfile /home/user2/.bashrc -i"

ほとんどの場合、これは-i.bashrcへのフルパスを指定しなくても機能することに注意してください。

ssh user1@server -t "cd /home/user2; bash --rcfile .bashrc "
于 2013-01-24T19:19:51.093 に答える