Alias has no effect in script

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

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 .