Команда cp: не найдена

Я пытаюсь скопировать один файл в другой каталог и получаю сообщение об ошибке во время вызова прерывания.

Сценарий:

#!/bin/bash


PATH=~/MkFile/

exitfn () {
    trap SIGINT              # Resore signal handling for SIGINT
        echo ; echo 'Called ctrl + c '    # Growl at user,

        cp ./BKP/temp.txt $PATH/backup.txt
            exit                     #   then exit script.
}

trap "exitfn" INT            # Set up SIGINT trap to call function.ii



    read -p "What? "

    echo "You said: $REPLY"
# reset all traps## 


    trap - 0 SIGINT

Выход:

./signal.sh
What? ^C
Called ctrl + c
./signal.sh: line 9: cp: command not found

У вас есть идея, что не так в этом сценарии?

2 ответа

Вы изменили свою переменную PATH, поэтому. Возможно, вы просто хотите добавить другой путь к нему:

PATH=$PATH:~/MkFile/

Или если в Bash, просто используйте оператор добавления:

PATH+=:~/MkFile/

Если подумать, я не думаю, что вы действительно хотите использовать переменную PATH. Просто используйте вместо этого другое имя параметра:

DIR=~/MkFile/

А некоторые рекомендуют просто использовать строчные буквы, чтобы избежать конфликта со встроенными переменными оболочки:

path=~/MkFile/

Из руководства:

PATH    A colon-separated list of directories in which the shell looks for
        commands.  A zero-length (null) directory name in the value of PATH
        indicates the current directory. A null directory name may appear
        as two adjacent colons, or as an initial or trailing colon.

В Linux $PATH - это переменная среды, которая содержит каталоги для поиска исполняемых файлов (см., Например, http://www.linfo.org/path_env_var.html).

Я действительно не знаю, если ваша цель изменить переменную PATH. Если это так, вы должны следовать ответу konsolebox, но если нет, вам следует избегать использования переменных окружения в качестве переменных в вашем скрипте. Попробуйте использовать вместо:

Путь =~/MkFile/

или же

MYPATH=~/MkFile/

Другие вопросы по тегам