63593
`~/.bash_aliases` であらかじめ以下のエイリアスを設定しておき、

```

    alias ll='ls -l'
    
```

`~/bin/rootls.sh` にてエイリアスを用いたコマンドを実行しようとしています。

```

    #!/bin/bash
    ll /
    
```

端末で以下のように実行したのですが、エイリアスが読み込まれていないようでした。

```

    $ BASH_ENV=~/.bash_aliases
    $ bash -O expand_aliases rootls.sh
    /home/naomeo0/bin/rootls.sh: 行 2: ll: コマンドが見つかりません
    
```

なぜこのような結果になるのでしょうか。
CC BY-SA 4.0
2020-03-05T07:04:22.137
63591
2020-03-05T08:50:20.100
2020-03-05T08:50:20.100
3060
34540
question
linux bash shellscript
シェルスクリプト内のエイリアスコマンドを実行したい
1行でまとめて実行するか、

```

    $ BASH_ENV=~/.bash_aliases bash -O expand_aliases ~/bin/rootls.sh
    
```

`export` で環境変数 BASH_ENV を設定してから実行してみてください。

```

    $ export BASH_ENV=~/.bash_aliases
    $ bash -O expand_aliases ~/bin/rootls.sh
    
```

* * *

export を付けず単に `BASH_ENV=~/.bash_aliases` を実行しただけでは、コマンド実行後に設定が残りません。

```

    $ printenv BASH_ENV
    $                            # 事前に何も設定されていないことを確認
    
    $ BASH_ENV=~/.bash_aliases
    $ printenv BASH_ENV
    $                            # 設定は残らない
    
```
CC BY-SA 4.0
2020-03-05T07:23:29.010
63593
2020-03-05T07:23:29.010
3060
63591
answer