별칭이 bash 명령을 직접 실행하는 것과 다르게 동작하는 이유는 무엇입니까?

별칭이 bash 명령을 직접 실행하는 것과 다르게 동작하는 이유는 무엇입니까?

내 로그 파일을 열기 위해 별칭을 만들려고 합니다.

alias open_log='date=`date +%y%m%d`;sudo tail -n 10 ~/logs/reconfig-$date.log;'

별칭을 실행할 때

open_log

나는 가지고있다

꼬리: 읽기 위해 '/home/benu/logs/reconfig-.log'를 열 수 없습니다. 해당 파일이나 디렉터리가 없습니다.

하지만 내가 달리면

"이 별칭에 대해 내가 설정한 내용"

date=`date +%y%m%d`;sudo tail -n 10 ~/logs/reconfig-$date.log;

그것은 아주 잘 작동합니다.

+ service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]
+ mkdir -p /etc/nginx/sites-available
+ cp /root/portal-data/sites-available/default-https /etc/nginx/sites-available/default
+ '[' '!' -f /etc/ssl/mywifibusiness.trg.telenet.be.cert.pem ']'
+ echo 'Error: Unable to find certificate at /etc/ssl/mywifibusiness.trg.telenet.be.cert.pem'
Error: Unable to find certificate at /etc/ssl/mywifibusiness.trg.telenet.be.cert.pem
+ exit 1
Error: Executing /home/benu/reconfig.d/70-ssc-portal.sh returned 1
Reconfigure aborted

왜 그들은 다르게 행동합니까? 누구든지 자세히 설명할 수 있나요?

별칭이 제대로 작동하도록 수정하려면 어떻게 해야 합니까?

답변1

미안해요, @ihue. 나는 처음부터 틀렸다. @ilkkachu님 감사합니다.

편집하기 전에 실행된 명령줄과 별칭을 비교합니다.

alias 'date=date +%y%m%d;sudo tail -n 10 ~/logs/reconfig-$date.log;'
date=`date +%y%m%d`;sudo tail -n 10 ~/logs/reconfig-$date.log;

별칭에 백틱이 없습니다. 또한 백틱은 다음과 같습니다.모든 것이 구식이다. 명령 대체에는 다음 형식을 사용하십시오. $(command).

큰따옴표는 이와 같이 작동하며 별칭이 설정될 때마다 날짜가 설정됩니다.

alias open_log="sudo tail -n 10 ~/logs/reconfig-$(date +%y%m%d).log"

작은따옴표는 동적으로 작동하여 별칭이 호출될 때마다 날짜를 설정합니다.

alias open_log='sudo tail -n 10 ~/logs/reconfig-$(date +%y%m%d).log'

관련 정보