Команда 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/