![비대화형/비로그인 셸에 대한 별칭을 어떻게 정의합니까?](https://linux55.com/image/82288/%EB%B9%84%EB%8C%80%ED%99%94%ED%98%95%2F%EB%B9%84%EB%A1%9C%EA%B7%B8%EC%9D%B8%20%EC%85%B8%EC%97%90%20%EB%8C%80%ED%95%9C%20%EB%B3%84%EC%B9%AD%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%A0%95%EC%9D%98%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
쉘이 로 설정된 사용자(zabbix)가 있습니다 /sbin/nologin
. 사용자의 집은 /var/lib/zabbix
내가 alias curl='curl -k'
에 연결하는 것입니다 ~zabbix/.bashrc
. 그러나 테스트 목적으로 질문을 발행하면 작동하지 않으며
sudo -u zabbix curl https://HOST-WITH-INVALID-ISSUER-CERTIFICATE
null을 반환합니다.
실제로 명령은 curl https://HOST-WITH-INVALID-ISSUER-CERTIFICATE
zabbix-server <--> zabbix-agent 상호 작용을 통해 원격으로 실행됩니다.
답변1
.curlrc
별칭 대신 ~zabbix
. 여기에는 curl
명령을 실행할 때 명령에 추가할 명령줄 매개변수가 포함되어 있습니다.
# --insecure being the more readable synonym for -k
$ echo "insecure" >> ~zabbix/.curlrc
답변2
기본적으로 비대화형 쉘은 별칭을 확장하지 않습니다. shopt -s expand_aliases
별칭을 정의하기 전에 이 작업을 명시적으로 수행 해야 합니다 . 또한 일반적으로 대화형 셸을 통해서만 얻을 수 있으므로 ~/.bashrc
명시적으로 얻어야 할 수도 있습니다.
즉, 함수는 별칭에 대한 훌륭한 대안이며 작동하기 위해 반쯤 모호한 설정이 필요하지 않습니다. 다음과 같습니다.
curl() { command curl -k "$@"; }
반복적인 토끼굴에 빠지지 않도록 command
검색 명령이 내장되어 있습니다 . $PATH
쉘이 초기화될 때 얻은 파일에서 이를 정의합니다.