~/USERNAME/bin/some_custom_command가 예상대로 작동하지 않는 이유는 무엇입니까?

~/USERNAME/bin/some_custom_command가 예상대로 작동하지 않는 이유는 무엇입니까?

나는 읽었다"리눅스 성경 10판", 3장: 셸 사용, 70페이지. 힌트 섹션이 있습니다:

자신만의 명령이나 쉘 스크립트를 추가하려면 홈 디렉토리의 bin 디렉토리에 넣으십시오(예: cn이라는 사용자의 경우 /home/cn/bin). 일부 Linux 시스템에서는 이 디렉터리가 경로에 자동으로 추가되지만 다른 Linux 시스템에서는 디렉터리를 생성하거나 PATH에 추가해야 할 수도 있습니다. 따라서 실행 권한이 있는 bin에 명령을 추가하면 쉘 프롬프트에 명령 이름을 입력하기만 하면 해당 명령을 사용할 수 있습니다. 모든 사용자가 명령을 사용할 수 있게 하려면 해당 명령을 다음에 추가하십시오./usr/로컬/빈

저는 Fedora Linux 35 Workstation Edition을 실행하고 있으며 사용자 정의 명령을 생성하려고 합니다. 내가 만들었다~/bin/kek.sh

#! /usr/bin/bash
echo "Kek"

명령줄로 이동하여 kek내 홈 디렉터리를 입력합니다. 나는 가지고있다 bash: kek: command not found.... 그 후 나는 내 집에 갔다.~/.bashrc파일 끝에 다음 줄을 추가하십시오.

PATH=$PATH:~/home/bin/kek; export PATH;

그런 다음으로 돌아갑니다~디렉토리로 이동하여 내가 변경 kek한 것과 동일한 bash: kek: command not found.....bashrcPATH 라인을 에 추가하고 PATH=$PATH:~/home/bin; export PATH;터미널 세션을 다시 로드하면 항상 동일한 결과를 얻습니다.

왜 그것이 나에게 효과가 없는지 설명해주세요. 나만의 명령을 만들고 이름으로만 액세스할 수 있도록 하려면 어떻게 해야 합니까? 감사해요.

답변1

PATH변수는 실행 파일이 존재할 수 있는 쉘을 나타냅니다. 따라서 스크립트를 kek.sh아래에 넣으면 에 ~/bin추가해야 합니다 . 그러나 대체 항목 에 추가한 것 같습니다 .~/binPATH~/home/bin/kekPATH

또 다른 문제는 스크립트의 이름이 인데 kek.sh실행하려는 명령이 이라는 것입니다 kek. 이름을 변경 kek.sh하거나 명령을 실행 kek해야 합니다 .kek.sh

#!/usr/bin/bash스크립트 상단(shebang이라고 함)에 배치되면 스크립트에 어떤 인터프리터를 사용해야 하는지 시스템에 알려줍니다. 내가 아는 한, 끝에 .sh로 이름을 지정하는 것은 쉘이 스크립트를 실행하는 방법에 영향을 미치지 않으므로 kek이름을 지정하는 것만으로도 적절한 인터프리터가 있는 한 실행 방법이 변경되지 않습니다.#!

관련 정보