It doesn't have effect in script but it works on the terminal
root@server:/opt/kvm/usecases/logs# alias echo='echo -e'
root@server:/opt/kvm/usecases/logs# echo "xxxx\n"
xxxx
root@server:/opt/kvm/usecases/logs# cat xx.sh
#!/bin/bash
alias echo='echo -n'
echo "sssf \n"
root@server:/opt/kvm/usecases/logs# ./xx.sh
sssf \n
alias ssh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
also has no effect in script
[/CODE]
echo is a shell builtin and a UNIX command in /usr/bin. The command version in /usr/bin accepts -e
So:
alias echo='/usr/bin/echo -e'
You are better off off specifying which echo:
/usr/bin/echo -e "sssf \n"
is you best choice
also has no effect
root@server:/opt/kvm/usecases/logs# ./xx.sh
sssf \n
root@server:/opt/kvm/usecases/logs# cat xx.sh
#!/bin/bash
alias echo='/bin/echo -e'
echo "sssf \n"
root@server:/opt/kvm/usecases/logs# which echo
/bin/echo
Yoda
4
You can fix this by adding shopt -s expand_aliases
#!/bin/bash
shopt -s expand_aliases
alias echo='echo -e'
echo "sssf \n"
Note: aliases are not expanded by default in non-interactive shell, and it can be enabled by setting the expand_aliases shell option using shopt .