Bashで「エイリアス」を作成する方法はいくつありますか?


10

私は2つの方法しか知りません:alias foo=barfunction foo() { bar }

私が質問している理由は、bashセッションの1つで突然- がエラーになるlnため、コマンドを実行できないためbashです-bash: /usr/local/.../ln: No such file or directory/usr/local/.../は私のPATH環境変数のエントリの1つです)。

PATHただし、問題が発生することはありません。実行するwhich lnと期待されるバイナリが出力されるためです/usr/bin/ln(絶対パスを指定すれば問題なく実行できます)。

私はまたのためにチェックしln、私にaliasfunction宣言し、何もありません。

$ declare -f | grep ln
$ alias | grep ln

問題は1つのbashセッションで発生しているだけです。新しいシェルを開始すると、再び正常に機能しますが、この特定のbashセッションで突然この問題が発生した原因を知りたいのです。

これを引き起こしている可能性のあるものに関するアイデアはありますか?

回答:


10

whichコマンドを使用するときは注意してください。type ...コマンドを使用することをお勧めします。

$ type ln
ln is /bin/ln

whereis次のコマンドも使用できます。

$ whereis ln
ln: /bin/ln /usr/share/man/man1p/ln.1p.gz /usr/share/man/man1/ln.1.gz

あなたが正しい!実行するtype lnln is hashed (/usr/local/.../ln)問題のように見えますが、「ハッシュ化」されているとはどういう意味ですか?私はその機能をbashで聞いたことがありません。
etherice 2013

3
@etherice-Bashは、コマンドの名前とその場所のハッシュ(キー=値リスト)を保持します。hash -lコマンドでリストを見ることができます。コマンドを使用すると動的に構築されます。
slm

@etherice-私はあなたの質問に賛成したので、あなたはたった4ポイントしか離れていません8-)。問題が解決し、それが最良の回答だと感じたときに回答を受け入れることができます。
slm

@etherice-他の誰かがあなたを賛成したので、今は16ポイントです。
slm

1
ありがとう!hash -rコマンドからパスへのハッシュテーブルをリセットするために実行しましたが、ln今は正常に機能しています。
etherice 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.