그래서 명령줄에서 실행하고 싶은 기능이 있습니다.
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