Bash-Shell脚本,在有某个命令的情况下,仍然报「command not found」的错误

发布于 2022-09-03 12:29:17 字数 1655 浏览 10 评论 0

描述问题

目的:
利用scp拷贝多个文件到另一台远程机器的特定目录下

原来是手工操作, 麻烦, 故想利用shell脚本帮助, 但是出错了. 无法找出错误源头

上下文环境

RedHat6.2
有scp命令
已传递公钥到远程机器上,故ssh是不需要输入密码的

脚本中的PATH已妥善处理, 所以应该没有问题的啊?

scp位置: 
which scp
/usr/bin/scp

重现

1 bash thefile.sh
2 ./thefile.sh

可能需要两台机器

相关代码

#!/usr/bin/env bash
# Programm:
# History :
# Date    :2016/8/17
# Author  :

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

COLOR_RED='\033[0;31m'
COLOR_GREEN='\033[0;32m'
COLOR_NONE='\033[0m'

HOME=`readlink -f ~`
USER=root
HOST="192.168.199.222"
PATH=/root/



echo -e "拷贝mybashrc .vimrc .vim"


_no_such_file() {
    echo -e "${COLOR_RED} NO SUCH FILE OR DIRECTORY! ${COLOR_NONE}"
}

# 拷贝mybashr
cp_mybashrc() {
    mybashrc=mybashrc
    if [[ -f "$HOME/$mybashrc" ]]; then
        scp "$HOME/$mybashrc" "$USER@$HOST:$PATH"
    else
        _no_such_file
    fi
}

cp_vimrc() {
    vimrc=".vimrc"
    if [[ -f "$HOME/$vimrc" ]]; then
        scp "$HOME/$vimrc" "$USER@$HOST:$PATH"
    else
        _no_such_file
    fi
}

cp_vim() {
    vim=.vim
    if [[ -d "$HOME/$vim" ]]; then
        scp -r "$HOME/$vim/" "$USER@$HOST:$PATH"
    else
        _no_such_file
    fi
}


main() {
    echo -e "${COLOR_GREEN}CLONING MYBASHRC .VIMRC .VIM... ${COLOR_NONE}"
    cp_mybashrc
    cp_vimrc
    cp_vim
}

main

报错信息

./bash_learn.sh: line 32: scp: command not found
./bash_learn.sh: line 41: scp: command not found
./bash_learn.sh: line 50: scp: command not found

相关截图

已经尝试哪些方法仍然没有解决(附上相关链接)

问题简化

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暮倦 2022-09-10 12:29:17

试试把scp换成/usr/bin/scp

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文