Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

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

課題

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?