シェルのエイリアスをシェルで実行されているスクリプトにどのように渡しますか? [コピー]

シェルのエイリアスをシェルで実行されているスクリプトにどのように渡しますか? [コピー]
$ 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'

シェルからスクリプトにエイリアスを渡す方法を知りたいです。ありがとうございます。

$ cat myscript 
#!/bin/bash
alias

$ ./myscript 
$

答え1

エイリアスはスクリプトが予期せず動作する可能性があるため、スクリプトを起動する前にエイリアスを意図的に消去します。

理論的には、スクリプト内でエイリアスを定義できますが、そのようなスクリプトが渡される場合

. scriptname

ドットスクリプトは実行前に完全に解析されるため、これらの新しいエイリアスはスクリプト内では許可されません。エイリアスを有効にするには、パーサーがこれについて知る必要があり、パーサーがエイリアスについて知るには、まず次のものが必要です。aliasシェル組み込みを実行します。

したがって、スクリプトにエイリアスを使用しないでください。簡単に入力できますが、一度作成されたが複数回実行されるスクリプトでは機能しません。

関連情報