sudo가 별칭을 잘못 이해했습니다.

sudo가 별칭을 잘못 이해했습니다.

내 쉘 세션에는 ~/.bashrc세트가 있으며 alias link='ln -sf'내 쉘 세션에서 그에 따라 작동합니다.

sudo그러나 명령 시작 부분에 사용해야 하는 루트 보호 위치의 경우 다음 오류가 발생합니다.link: cannot create link '<$2>' to '<$1>': Operation not permitted

무슨 일이에요? 어떻게 우회할 수 있나요?

답변1

sudo외부 명령이므로 별칭을 알 수 없습니다. 귀하의 쉘만이 귀하의 별칭을 알고 있지만 sudo별칭의 일부는 아닙니다.

이 경우 바이너리를 sudo실행해 보고 싶습니다. Linux 시스템에서 이는 간단한 명령이며 항상/usr/bin/link딱딱한link(2)연결은 시스템 호출을 호출하여 수행됩니다.

$ link --help
Usage: link FILE1 FILE2
  or:  link OPTION
Call the link function to create a link named FILE2 to an existing FILE1.

      --help     display this help and exit
      --version  output version information and exit

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation at: <https://www.gnu.org/software/coreutils/link>
or available locally via: info '(coreutils) link invocation'

답변2

여기서 문제는 bash가 alias 명령의 첫 번째 단어만 계산하고 해당 텍스트를 해당 별칭의 텍스트로 바꾼다는 것입니다.

이렇게 하면 bash는 alias 명령을 확장하지 않고 sudo <your_alias>첫 번째 단어 자체만 평가합니다 .sudo

해결책은 sudo 자체에 대한 별칭을 만드는 것입니다.

다음과 같은 별칭을 만들면alias='sudo '(sudo 명령 뒤의 공백에 주의하세요)원하는 명령을 완료할 수 있습니다.

관련 정보