質問するログイン新規登録

回答編集履歴

2

表現ちょっと修正。

2020/09/23 12:04

投稿

hidezzz
hidezzz

スコア1248

answer CHANGED
@@ -4,7 +4,7 @@
4
4
  > *の展開がローカルにファイルがある場合とない場合で挙動が異なる理由について、
5
5
  > ご存知でしたら教えてほしいです。
6
6
 
7
- 質問文を見る限り挙動は理解されているようで、あらためて説明も良いのかわかりませんが…、
7
+ 質問文を見る限り挙動は理解されているようで、疑問点について説明出来ていのかどうかわからないのですが…、
8
8
 
9
9
  「*」の展開はローカルのシェルがまず行っており、その際、ローカルに「*」で展開出来るファイルがあれば展開された状態の文字列でsshコマンドでリモートに渡され、ローカルで「*」で展開できなければ「*」のままsshでリモート先に渡されリモート先のシェルでその「*」が展開されるということだと思います。
10
10
 

1

「*」をシングルクォーテーションで囲んだ場合の挙動について追記した。

2020/09/23 12:04

投稿

hidezzz
hidezzz

スコア1248

answer CHANGED
@@ -8,4 +8,9 @@
8
8
 
9
9
  「*」の展開はローカルのシェルがまず行っており、その際、ローカルに「*」で展開出来るファイルがあれば展開された状態の文字列でsshコマンドでリモートに渡され、ローカルで「*」で展開できなければ「*」のままsshでリモート先に渡されリモート先のシェルでその「*」が展開されるということだと思います。
10
10
 
11
+ > ssh testusert@XXX.XXX.XXX.XXX 'ls /tmp/test*.data'
12
+ > とすることで、問題は回避できるのですが、
13
+
14
+ こちらの場合は、ローカルのシェルの「*」展開が行われずに「*」がそのままsshへ渡るので、ローカル側のファイルの存在の影響を受けません。
15
+
11
16
  今の質問文からはそれ以上の説明は自分には出来ませんが、何が知りたいかさらに掘り下げて補足してもらえば説明出来るかもしれません。