악성 별칭 선언을 찾으려면 어떻게해야합니까?


37

특정 alias부분이 선언 된 곳을 찾으려고 합니다. 별칭을 찾기 위해 알고있는 모든 일반적인 장소를 검색했습니다.

  • ~ / .bashrc
  • ~ / .bash_profile
  • / etc / bashrc
  • / etc / profile

운이 없다.

내가 alias할 때 나는 which COMMAND그것을 얻는다 는 것을 안다 .

alias COMMAND='/path/to/command'
    /path/to/command

이름 alias만 알고있는 파일을 찾는 방법이 alias있습니까?


3
관련 질문 환경 변수 대신 별명에 대해. 기본적으로 별칭을 어디에서나 설정할 수 있기 때문에 쉬운 방법이 없습니다. set -x당신의 상단에 제안대로 넣어보십시오 그리고 그것이 당신을 위해 좁혀 있는지 확인하십시오.
jw013

1
또는 set -x의 맨 위에 놓아야 합니다 . 왜 그냥 실행되지 나 ? /etc/bash_profile/etc/bashrcbash -i -xbash -l -x
Mikel

답변:


30

나는 /etc/profile.d/기분을 상하게 할 것이다 alias.

다음을 수행하여 찾을 수도 있습니다.

grep -r '^alias COMMAND' /etc

이것은로 grep시작하는 줄을 찾는 파일을 통해 재귀 적 으로 나타납니다 alias COMMAND.

다른 모든 것이 실패하면, 당신의 끝에 이것을 넣어 ~/.bashrc

unalias COMMAND

26

시도 할 수있는 몇 가지 사항이 있습니다.

  1. bash -v쉘 시작 중에 어떤 행을 읽고 있는지 확인하는 데 사용
  2. 사용 bash -x명령 쉘 시작하는 동안 실행되고있는 것을 볼 수
  3. 하나의 시작 파일로 실행

bash -v

-v 옵션은 bash읽을 때마다 모든 스크립트 파일에서 각 줄을 인쇄합니다.

실행하여 시작

bash -i -v >bash-i.out 2>&1

5-10 초 정도 기다린 다음를 누릅니다 Ctrl+C.

이렇게하면 bash-i.out모든 시작 파일이 병합 (또는 연결) 된 것과 같은 단일 파일이 제공 됩니다.

그런 다음을 사용 less하여 파일을 열고을 사용하여 별칭을 검색하십시오 /aliasname.

이제 파일의 다른 줄과 관련하여 해당 별칭이 나타나는 위치를 비교하십시오. 예를 들어, 대부분의 시스템에서, /etc/bash.bashrc말한다 상단에 주석이 /etc/bash.bashrc~/.bashrc너무 하나를 가지고 있습니다.

이 파일이의 맨 위에 있으면 별칭을 정의 ~/.bashrc하는 시작 파일 /etc일 수 있습니다. 그렇지 않으면 또는 ( 또는 점 명령)을 ~/.bashrc포함하는 파일 또는 파일에 있습니다 .source.

별명이 보이지 않으면 시도하십시오

bash -l -v >bash-l.out 2>&1

즉 로그인 예를 들어, 일부 다른 시작 파일을 읽어 쉘로 떠들썩한 파티를 지시 /etc/profile하고 ~/.bash_profile대신 /etc/bash.bashrc하고 ~/.bashrc.

bash -x

경우 bash -v당신에게 명확한 대답을하지 않는다, 실행 해 bash -x오히려 쉘이 읽고 라인보다, 쉘이 실행되는 명령을 출력한다.

방법은로 변경 -v하는 것을 제외하고는 기본적으로 위와 동일 합니다 -x. 필요한 경우 두 가지를 함께 사용할 수 있습니다.

하나의 시작 파일만으로 실행

bash -i --rcfile="$HOME/.bashrc"

별칭이 있는지 확인하십시오.

시스템에 rcfile설정되어 /etc/bash.bashrc있으면 동일하게 시도하십시오 .

그런 다음 시도하십시오

bash -l --rcfile="$HOME/.bash_profile"

모든 bash는 시작이 파일을 사용하여 동일한 작업을 수행 profile예를 들어 이름에, 변화 $HOME/.bash_profile/etc/profile.

별명을 표시하는 방법은보고 시작해야 할 파일을 알려줍니다.


2

아마도 .xinitrc? 또한 귀하의 파일 .bashrc이나 .bash_profile다른 파일이 있는지 확인해야 합니다. 예를 들어, 모든 별칭을이 명령이 참조하는 별도의 파일에 보관합니다.

[ -f ~/.bash_alias ] && source $HOME/.bash_alias

도움이 될만한 몇 가지 질문은 다음과 같습니다. 일반 사용자입니까, 루트 사용자입니까? 어떤 명령입니까? 리눅스의 어떤 맛?


0

별칭 정의를 넣는 일반적인 관행을 따릅니다.

~/.bash_aliases

그런 다음 .bashrc에서

[ -f ~/.bash_aliases ] && source $HOME/.bash_aliases

.bash_alias 대신 두 번째 명령에서 .bash_aliases를 의미한다고 생각할 수 있습니까?
stagl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.