dポイントプレゼントキャンペーン実施中!

cygwinのterminal上で
alias abc=ls
abc
とやるとlsを実行したことになるのですが、
内容が
#!/bin/bash
alias abc=ls
abc
のa.shというシェルを作り実行すると、
./a.sh: line 3: abc: コマンドが見つかりません
というエラーが出て実行してくれません。
解決策が分かる方よろしくお願いします。

A 回答 (1件)

bashのスクリプトのことなら、まずは、bashのマニュアルを読むことです。


man bash で読めます。

ネット検索すれば、日本語訳も見つかります。
http://linuxjm.sourceforge.jp/html/GNU_bash/man1 …

マニュアルのAliasについての説明を読むと

> シェルが対話的でないときには、 shopt コマンドによって expand_aliases オプションが設定されていない場合に限り、 エイリアスの展開は行われません

シェルスクリプトは「対話的ではありません」


スクリプト中にエイリアス使うことは、あまりお勧めできません。思わぬものが展開されて、期待通りに動作しないことがあるからです。(例えば、 alias ls="rm -rf" などとなってたりしたら....)
    • good
    • 0
この回答へのお礼

ありがとうございました。意味がよくわかりました。
シェル内でのエイリアスは成功しましたが、うまく動かないことも多いということなので使わないことにします。

お礼日時:2012/07/02 11:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!