스크립트가 명령 대신 별칭을 사용하도록 할 수 있나요?

스크립트가 명령 대신 별칭을 사용하도록 할 수 있나요?

명령에 대한 별칭이 있습니다(Python 개발 환경을 설정 중입니다).

alias python=~/virtualenv/bin/python

이렇게 하면 ~/virtualenv/bin/python그냥 입력하고 실행할 수 있습니다 python. 이제 프로젝트에 쉘 스크립트가 있습니다. 예를 들면 다음과 같습니다.

#!/bin/sh
python run-project.py

스크립트를 변경하지 않고도 스크립트 에서 찾은 별칭 python대신 내 별칭을 사용하도록 할 수 있나요 ?python$PATH

답변1

예.

별칭을 넣으면 ~/.aliases할 수 있습니다

export BASH_ENV="~/.aliases"
somescript

이는 예측할 수 없기 #!/bin/bash때문에 스크립트가 로 시작한다고 가정합니다 .#!/bin/sh

내 제안은 다음과 같습니다.

  1. ~/.bashenv 생성
  2. 스크립트에서 사용하려는 모든 설정을 ~/.bashrc에서 ~/.bashenv로 이동하세요.
  3. ~/.bashrc 상단에 다음을 추가하세요.
    [ -f ~/.bashenv ] && source ~/.bashenv
  4. BASH_ENV=~/.bashenv/etc/environment 에 넣어주세요
  5. #!/bin/bash스크립트가 아직 시작되지 않은 경우 다음으로 시작하십시오.

또는 zsh를 사용하는 경우 별칭을 ~/.zshenv로 이동하세요. zsh는 자동으로 이 파일을 찾습니다.


~/virtualenv/bin하지만 아마도 그것을 앞에 두고 PATHPython 스크립트를 #!/usr/bin/env python첫 번째 줄로 변경하는 것이 더 쉬울 수도 있습니다 .

답변2

별칭 파일이 "~/.bash_alias”, 이것을 스크립트에 넣으세요:

#!/bin/bash
shopt -s expand_aliases
source ~/.bash_aliases
python run-project.py

(통과하다)

답변3

또는 언제든지 source스크립트에서 별칭을 강제 적용할 수 있습니다. 예를 들어 rm다음에 별칭이 있다고 가정해 보겠습니다 ~/.bashrc.

alias rm='moveToTrash'

while moveToTrash은 당신의 것입니다 /usr/bin. 이제 다음과 같은 스크립트가 있습니다 test.bash.

#!/bin/bash

which rm

직접 실행 하면 test.bash출력을 볼 수 /bin/rm있고 source test.bash출력을 얻을 수 있습니다.

alias rm='moveToTrash'
    /usr/bin/moveToTrash

관련 정보