LoginSignup
5
2

More than 3 years have passed since last update.

[Elixir] PowerShellでiexを使うには?

Posted at

課題

PowerShellでElixirのiexを起動しようとすると、代わりにコマンドレットのInvoke-Expressionが実行されてしまい、失敗する。
iexInvoke-Expressionのエイリアス(別名)として登録されているためである。

PS C:\> iex

cmdlet Invoke-Expression at command pipeline position 1
Supply values for the following parameters:
Command:

Get-Aliasで確認すると、確かにiexがエイリアスになっている。

PS C:\> Get-Alias iex

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           iex -> Invoke-Expression

対処法1

PowerShellではなくコマンドプロンプトを使う。

対処法2

iexでなくiex.batと拡張子まで入力すればElixirのほうのiexが起動できる。

対処法3

エイリアスからiexを削除する。
Remove-Item alias:iex -Forceで削除できる。
(read-onlyプロパティの設定されたエイリアスを消すには -Forceパラメータが必要)

PS C:\> Remove-Item alias:iex -Force
PS C:\> iex
Interactive Elixir (1.10.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>

ただしこの方法ではPowerShellを起動するたびに設定が元に戻ってしまうので、毎回Remove-Itemしなければならず面倒である。

対処法4

PowerShellプロファイルを編集する。
まずはプロファイルの場所を確認。

PS C:\> $PROFILE
(プロファイルの場所が表示される)

この場所にプロファイルを用意すれば良い。
まだプロファイルが無い場合は、以下のコマンドで空のプロファイルを作成できる。

PS C:\> New-Item $PROFILE -Force -Type FILE

プロファイルが作成されるので、メモ帳などで編集してやればよい。
PowerShellから直接メモ帳で開くこともできる。

PS C:\> notepad $PROFILE

ここに
Remove-Item alias:iex -Force
を書いて保存すればOK。

これで次回のPowerShell起動時からは、最初から
Remove-Item alias:iex -Force
が実行されたのと同じ状態になる。

元に戻したい時はプロファイルの内容を消すか、ファイルごと削除すればよい。

参考

Elixir ForumのQ&A
https://elixirforum.com/t/iex-in-windows-powershell/14622

PowerShellプロファイルについて
http://acoustic-groove2.hatenablog.com/entry/2017/12/06/013928

PowerShell 5 と 6 で Profile の場所が違う
http://www.vwnet.jp/windows/PowerShell/2018032601/PS6Profile.htm

5
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2