diff --git a/src/commands/cp.rs b/src/commands/cp.rs index 5e1ac6d26f..5c3b5acc8d 100644 --- a/src/commands/cp.rs +++ b/src/commands/cp.rs @@ -45,11 +45,15 @@ fn cp( dst, recursive, }: CopyArgs, - RunnablePerItemContext { name, .. }: &RunnablePerItemContext, + context: &RunnablePerItemContext, ) -> Result, ShellError> { - let source = src.item.clone(); - let mut destination = dst.item.clone(); - let name_span = name; + let name_span = context.name; + + let mut source = PathBuf::from(context.shell_manager.path()); + let mut destination = PathBuf::from(context.shell_manager.path()); + + source.push(&src.item); + destination.push(&dst.item); let sources: Vec<_> = match glob::glob(&source.to_string_lossy()) { Ok(files) => files.collect(), diff --git a/src/commands/mv.rs b/src/commands/mv.rs index fc00248b4a..e9a0232234 100644 --- a/src/commands/mv.rs +++ b/src/commands/mv.rs @@ -38,14 +38,15 @@ impl PerItemCommand for Move { fn mv( MoveArgs { src, dst }: MoveArgs, - RunnablePerItemContext { - name, - shell_manager, - }: &RunnablePerItemContext, + context: &RunnablePerItemContext, ) -> Result, ShellError> { - let source = src.item.clone(); - let mut destination = dst.item.clone(); - let name_span = name; + let name_span = context.name; + + let mut source = PathBuf::from(context.shell_manager.path()); + let mut destination = PathBuf::from(context.shell_manager.path()); + + source.push(&src.item); + destination.push(&dst.item); let sources: Vec<_> = match glob::glob(&source.to_string_lossy()) { Ok(files) => files.collect(), @@ -58,10 +59,6 @@ fn mv( } }; - if "." == destination.to_string_lossy() { - destination = PathBuf::from(shell_manager.path()); - } - let destination_file_name = { match destination.file_name() { Some(name) => PathBuf::from(name),