PATH에 추가한 후 명령줄에서 파일을 실행할 수 없습니다.

PATH에 추가한 후 명령줄에서 파일을 실행할 수 없습니다.

그래서 명령줄에서 실행하고 싶은 기능이 있습니다.

cat foo.sh

#!/bin/bash
echo foobar

이를 PATH 변수로 내보내고 다른 디렉터리로 변경했습니다.

export PATH=${PATH}:/home/usr/scripts/foo.sh

mkdir test && cd test
sh foo.sh
sh: foo.sh: No such file or directory

이렇게 실행 foo.sh하면 bash: foo.sh: command not found.

절대 경로를 사용하여 실행할 수 있지만 $PATH에 추가하면 그렇게 할 필요는 없을 것 같습니다. 내가 여기서 무슨 실수를 했나요?

감사해요.

답변1

여기에는 몇 가지 문제가 있습니다. $PATH파일이 아닌 콜론으로 구분된 디렉터리로 구성됩니다. 스크립트를 bash스크립트로 선언한 다음 이를 사용하여 sh실행하면 안 됩니다. 일반적으로 표준 유틸리티처럼 호출하려는 파일에는 확장자가 없습니다. (어쨌든 확장은 선택 사항인 경우가 많습니다.)

# Create a directory
mkdir -p "$HOME/bin"

# Create a script in that directory
cat <<'EOF' >"$HOME/bin/myscript"    # Don't use "test" :-O
#!/bin/bash
echo This is myscript
EOF

# Make it executable
chmod a+x "$HOME/bin/myscript"

# Add the directory to the PATH
export PATH="$PATH:$HOME/bin"

# Now run the script as if it's a normal command
myscript

명명된 스크립트를 사용하지 않도록 주의할 점은 test해당 스크립트가 /bin/test이미 유효한 명령으로 존재한다는 것입니다. 또한 많은 셸 에는 test.$PATH

관련 정보