비대화형/비로그인 셸에 대한 별칭을 어떻게 정의합니까?

비대화형/비로그인 셸에 대한 별칭을 어떻게 정의합니까?

쉘이 로 설정된 사용자(zabbix)가 있습니다 /sbin/nologin. 사용자의 집은 /var/lib/zabbix내가 alias curl='curl -k'에 연결하는 것입니다 ~zabbix/.bashrc. 그러나 테스트 목적으로 질문을 발행하면 작동하지 않으며 sudo -u zabbix curl https://HOST-WITH-INVALID-ISSUER-CERTIFICATEnull을 반환합니다.

실제로 명령은 curl https://HOST-WITH-INVALID-ISSUER-CERTIFICATEzabbix-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쉘이 초기화될 때 얻은 파일에서 이를 정의합니다.

관련 정보