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

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

描述问题

目的:
利用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

相关截图

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

问题简化


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

【热门文章】
【热门文章】