. file
매뉴얼 페이지에 지정된 방법을 사용하여 대시로 파일을 가져오려고 합니다.
. file The commands in the specified file are read and executed by the shell.
하지만 파일을 사용해도 오류가 발생합니다.당신은 가지고 있습니까?:
$ ls
defaults.sh run.sh
$ cat run.sh
#!/bin/sh
. defaults.sh
echo "VAR: $VAR"
$ cat defaults.sh
VAR=abc
$ bash run.sh
VAR: abc
$ dash run.sh
run.sh: 3: .: defaults.sh: not found
. defaults.sh
대화형 대시를 사용해도 같은 일이 발생합니다.
여기서 내가 어디서 잘못됐나요?
답변1
./
일부 쉘의 경우 앞에 추가 경로 또는 절대 경로가 필요합니다 .
. ./defaults.sh
추가하고 싶을 수도 있습니다.run.sh
스크립트의 절대 경로, 그렇지 않으면 defaults.sh
사용자 위치에서 가져옵니다.
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
. "$SCRIPT_DIR"/defaults.sh
답변2
run.sh 및 defaults.sh 파일과 동일한 디렉터리에서 "dash run.sh"를 실행하는 경우 PATH에 $PWD를 추가해 보세요.
내 테스트에서 다음과 같은 결과를 확인했습니다.
# dash run.sh
run.sh: 3: .: defaults.sh: not found
그런 다음 다음 단계를 수행했습니다.
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# export PATH=$PATH:$PWD
PATH에 $PWD를 추가한 후의 결과:
# dash run.sh
VAR: abc