如何将别名从 shell 传递到由它运行的脚本?

如何将别名从 shell 传递到由它运行的脚本?
$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

我想知道如何将别名从 shell 传递到脚本?谢谢。

$ cat myscript 
#!/bin/bash
alias

$ ./myscript 
$

答案1

在启动脚本之前会有意清除别名,因为别名可能会导致脚本行为异常。

理论上,您可以在脚本内定义别名,但如果这样的脚本是通过

. scriptname

不允许在脚本内部使用这些新别名,因为点脚本在运行之前已被完全解析,并且为了使别名有效,解析器需要知道它,并且为了让解析器知道别名,您首先需要运行aliasshell 内置命令。

所以不要在脚本中使用别名。它们可以让输入变得更容易,但这不适用于编写一次但运行多次的脚本。

相关内容