나는 시도했다:
gaspipe@kali:~/bashscripts$ ls
./ ../ addpath* autoinstaller
gaspipe@kali:~/bashscripts$ cd ..
gaspipe@kali:~$ addpath
addpath: command not found
gaspipe@kali:~$ addpath*
addpath*: command not found
gaspipe@kali:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games/home/gaspipe/bashscripts
환경 변수 man 과 관련된 문제는 PATH
Linux에서 이보다 더 어려운 것은 없으며 매우 간단한 개념입니다. 그러나 경로에 디렉터리를 추가하는 스크립트를 만드는 것만으로도 나에게는 힘든 일이다.
계속해서 파일을 열고 긴 경로 이름을 입력하고 싶지 않습니다 ~/.bashrc
. 그냥 입력 addpath <dir>
하고 끝내고 싶습니다 .
왜 이것이 확립된 절차가 아닌가?
답변1
로컬 폴더는 /usr/games 디렉터리와 분리되어 있지 않습니다.
gaspipe@kali:~$ echo $PATH
...:/bin:/usr/local/games:/usr/games/home/gaspipe/bashscripts
그것은해야한다:
gaspipe@kali:~$ echo $PATH
...:/bin:/usr/local/games:/usr/games:/home/gaspipe/bashscripts
(차이점을 더 명확하게 하기 위해 PATH의 시작 부분을 잘라냈습니다.)
답변2
현재 쉘 환경을 조작하기 위한 스크립트를 원하는 경우 다음 스크립트를 얻어야 합니다.
source ./addpath
또는
. ./addpath
addpath
또는 셸 함수나 별칭을 만들 수 있습니다 .
일반적인 방법으로 스크립트를 실행하면 현재 셸은 현재 셸 환경의 복사본을 사용하여 스크립트를 실행하기 위한 새 프로세스를 만듭니다. 스크립트는 복사본을 수정한 후 스크립트가 끝나면 프로세스가 종료되고 수정된 환경이 손실됩니다.
반면에 셸 함수와 별칭은 현재 셸에서 실행되므로 명령줄 세션의 환경을 쉽게 수정할 수 있습니다.
답변3
샘플 스크립트가 있습니다.
$ cd ~/bin
$ cat example
#!/bin/bash
echo Hello
source
이것을 실행하려면 telcoM의 답변처럼 할 수 있습니다 .
$ source example
Hello
그러나 직접 실행할 수 있도록 실행 권한을 추가하겠습니다.
$ ls -l
-rw-r--r-- 1 stew stew 23 Feb 12 10:15 example
$ chmod +x example
$ ls -l
-rwxr-xr-x 1 stew stew 23 Feb 12 10:15 example
이제 절대 또는 상대 경로를 참조하여 스크립트를 호출할 수 있습니다.
$ ./example
Hello
$ ~/bin/example
Hello
이 명령을 자주 실행하지 않으려는 경우 일반적으로 이것으로 충분합니다. 그러나 파일을 자주 실행하는 경우 위치를 지정하지 않고 실행 파일을 실행하는 것이 좋습니다.
$PATH
일반적으로 나는 이 스크립트를 이미 지정된 위치(예:)에 배치합니다 /usr/local/bin
. 모든 사용자 정의 스크립트가 동일한 위치에 있고 모든 사용자가 사용할 수 있기 때문에 이를 통해 정리된 상태를 유지하는 데 도움이 됩니다.
어떤 경우에는 사용자별 스크립트를 포함하고 싶은 경우가 있는데, $HOME/bin
이 경우 해당 디렉터리를 $PATH
환경 변수에 추가해야 합니다.
PATH
현재 명령에 임시로 디렉터리를 연결할 수 있습니다.
$ echo $PATH
/usr/local/bin:/usr/bin:/bin
$ PATH=$PATH:~/bin example
Hello
$ echo $PATH
/usr/local/bin:/usr/bin:/bin
아직 디렉터리 경로를 입력하고 있기 때문에 이는 별로 유용하지 않습니다. 환경 변수를 통해 단일 실행에 대한 옵션을 설정하는 데 가장 유용합니다.
더 오래 지속되기를 원한다면(아마도 이 셸 세션에서 명령을 여러 번 실행하고 싶을 수도 있음) 셸에 대해 설정할 수 있습니다.
$ PATH=$PATH:~/bin
$ example
Hello
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:~/bin
이는 다음 10분 동안 명령을 여러 번 사용한 후 다시는 사용하지 않을 경우에 유용합니다. 그러나 새 터미널이 시작되면 이 변경 사항은 손실됩니다.
를 사용한다고 가정하면 bash
bash가 시작될 때 자동으로 설정하여 세션 간에 이 변경 사항이 유지되도록 할 수 있습니다. 다음 명령은 bashrc
새 인스턴스가 시작될 때마다 실행되는 사용자 디렉터리에 내 디렉터리를 추가합니다.bash
$ echo 'PATH=$PATH:~/bin` >> ~/.bashrc
이제 새 쉘을 시작할 때마다 내 디렉토리에 포함되며 PATH
경로를 지정하지 않고도 호출할 수 있습니다. example
이는 시스템의 다른 사용자에게 영향을 미치지 않습니다.
$ example
Hello
:
특정 질문에서 가장 큰 실수는 $PATH
기존 디렉토리와 사용자 정의 디렉토리 사이에 콜론을 추가하지 않는 것입니다.