_.bashrc
_の終わりに、私は追加しました:
_touch /tmp/bash_noninteractive_test
_
実行:
_/usr/bin/ssh -v -C [email protected] 'ls'
_
ホスト上(以前にインタラクティブにログイン):
_% ls -l /tmp/bash_noninteractive_test
ls: cannot access /tmp/bash_noninteractive_test: No such file or directory
_
_~./bashrc
_は常にSSHなどの非対話型シェルから供給されていると思いましたか?どうすれば修正できますか?
影響を受けるシステム:
_% lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 Codename: trusty
_
% lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 8.11 (jessie) Release: 8.11 Codename: jessie
_man bash
_のINVOCATIONの章から:
ログインシェルではない対話型シェルが開始されると、bashは_
/etc/bash.bashrc
_および_~/.bashrc
_(これらのファイルが存在する場合)からコマンドを読み取って実行します。 _--norc
_オプションを使用すると、これを禁止できます。 _--rcfile
_ fileオプションは、bashに_/etc/bash.bashrc
_および_~/.bashrc
_の代わりにファイルからコマンドを読み取って実行するように強制します。Bashが非対話的に開始されると、たとえば、シェルスクリプトを実行するために、環境で変数_
BASH_ENV
_を探し、そこに表示されている場合はその値を展開し、展開された値をファイルの名前として使用します読み取り、実行します。 bashは、次のコマンドが実行されたかのように動作します。_if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
_ただし、PATH変数の値は、ファイル名の検索には使用されません。
したがって、_~/.bashrc
_がそれを指していない限り、_BASH_ENV
_は非対話型シェルでソースされているneverのようです。
実際に達成したいことによっては、リモートホストの_/etc/ssh/sshd_config
_でPermitUserRC
やPermitUserEnvironment
を有効にし、次に_~/.ssh/environment
_および/または_~/.ssh/rc
_の目的のコマンド。
注: SSH X11転送を_~/.ssh/rc
_と一緒に使用する場合は、X11セッションを_xauth -q -
_コマンドに明示的にフィードするためのコードスニペットを含める必要があります。 sshd(8)
のmanページのSSHRCの章にある例を参照してください。