자주 사용하는 별칭을 설정하고 명령 프롬프트를 변경하기 위해 bash 스크립트를 작성해야겠다고 생각했습니다.
아래는 내 스크립트입니다.
#!/bin/bash
# Make useful aliases
alias c='clear'
alias p='pwd'
alias d='pwd'
alias l='ls -l'
alias clp='clear;pwd'
# Prompt
PS1='unix % '
# Echo to check if script runing
echo 'Hello world'
하지만 이 스크립트를 실행하면(실행 권한을 부여한 후) 별칭이 추가되지 않습니다. 프롬프트도 PS1에서 제공한 값으로 업데이트되지 않습니다. 그래도 echo 가 나오 Hello world
므로 스크립트가 실행 중인 것처럼 보입니다.
user $ ./myEnv.sh
Hello world
user $ d
d: command not found
user $
오류는 어디에 있습니까?
답변1
스크립트가 자체 환경에서 이러한 변수를 생성하는 것은 쉽습니다. 그런 다음 종료할 때 해당 특정 환경이 파괴되고 이러한 변수가 원하는 방식으로 설정되지 않은 상위 쉘 환경으로 돌아갑니다.
실행하는 대신 이렇게 가져와야합니다.. myEnv.sh
답변2
스크립트는 자체 인스턴스에 별칭을 생성합니다. 다른 인스턴스나 상위 bash 인스턴스에서는 별칭을 사용할 수 없습니다. 또한 프롬프트는 특정 bash 인스턴스 내에서만 변경됩니다.
답변3
다른 사람들이 말했듯이 별칭 및 변경된 환경 변수와 같은 사항을 적용하려면 스크립트를 가져와야 합니다.
그러나 이 방법의 단점은 경로에서 스크립트를 실행할 수는 있지만 이 방법으로 스크립트를 얻을 수 없다는 것입니다. 즉, 별칭을 포함할 때마다 전체 경로를 지정해야 합니다. 이것은 약간 짜증스러울 수 있습니다.
이를 방지하려면 ~/.bashrc
시작 시 bash 쉘이 대화식으로 실행될 때 파일을 가져옵니다.자동으로, 따라서 이 파일에 별칭을 정의하면 해당 시점부터 새로 시작된 모든 셸에서 사용할 수 있습니다.
별칭을 지정하고 싶지 않은 경우언제나사용 가능하면기능당신의 ~/.bashrc
:
addaliases() {
alias c='clear'
alias p='pwd'
# ... and so on
}
이제 다음에 bash를 시작할 때 addaliases
명령줄에서 실행할 수 있으며 별칭이 추가됩니다.
bash를 사용하지 않고 다른 셸을 사용하는 경우 분명히 에 넣지 말고 ~/.bashrc
사용 중인 특정 셸에 전적으로 의존하는 다른 파일에 넣어야 합니다.