Subscribed unsubscribe Subscribe Subscribe

目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

エイリアスを使わないでコマンド実行するいくつかの方法

ちょっと前にシェルスクリプトでlsを使っていて、@karupanerura氏に"lsってエイリアス使ってる人多いからシェルスクリプトではあまり使わない方が良いすよ"(意訳)と言われてあーそういえば、思いつつも、エイリアス無効にする方法があった気がしたので、備忘録代わりに残しておく。

zshで試してるのでbashとかでは知らないです。たぶん同じだとは思いますが。

エスケープする

エスケープって言い方で良いのか知りませんが、¥をコマンドの手前に付けるとエイリアスを無視してくれます。
これどのman page引けば詳細が分かるか誰か教えてください。

¥ls

絶対パスを使う

これが一番素直かな。ただし、どのシステムでも同じパスにあるとは限らないコマンドのときは注意した方が良い。

/bin/ls

commandを使う

commandをコマンドの前に付けると、コマンドとして定義されているコマンドを実行します。

comannd ls

似たものにbuiltinというのがあってこれはシェルの組み込みコマンドを実行してくれます。

envを使う

元々は環境変数を指定してコマンドを実行するためのコマンドですが、コマンド自体はエイリアスを無視して実行する模様。
man env引いてもなぜaliasでなくコマンド自体を実行するのかちょっと分からなかった。
いずれにしても、素直じゃない使い方な気がする。

env ls

aliasを無効にする

ただ、そもそもaliasが設定されていないときにwarnがでるのがうざったい

unalias ls
ls

そもそもaliasを設定しない

うん。

というのは身もふたもないけど、.zshrcに書けばシェルスクリプトとして実行するときには読み込まれないので、そちらに書けば良いと思いまする。
シェルスクリプト実行時に読み込まれるのは.zshenvなのでそこに書かなければ問題ないはず。

前に調べたやつが間違ってなければ、この認識で良いはず。

zshの設定ファイルの読み込み順番のメモ - 目の前には僕らの道がある