シェルスクリプト内ではエイリアスは効かないのでは・・・
Fri Jul 4 09:03:25 JST 2014 (modified: Sun Oct 1 10:50:27 JST 2017)
views: 1613, keywords:どうでもいい,シェルスクリプト,実験は大切 この記事は最終更新日が7年以上前のものです。
こんなエントリーを見つけたので・・・
シェルスクリプトを公開するとき, コマンド前にバックスラッシュをつけるべき
私も勘違いがあるかもしれませんが。
追記: 「シェルスクリプト」と表現されているものがシェルスクリプトなのかワンライナーになるのか、そこらへんがはっきりしません。あと、zshの話なので他のシェルだとどうなのか、そこらへんもよく分かりません。タイトルはインパクトがありますね。そのためTwitterでかなり出回っているので気になった次第です。
ちょっと実験してみましょう。
私のUbuntuのaliasです。
ueda@remote:~$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\\''s/^\\s*[0-9]\\+\\s*//;s/[;&|]\\s*alert$//'\\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
lと打つとこんな出力が。
ueda@remote:~$ l
123456789012.eps db/ id_rsa.pub takashi tmpvisit
123456789012.png death_hato.bash* ipv6 test.bash* trackback.cgi*
GIT/ dummy.pdf kenpinsiru.bash* test2.bash* ueda.png
TESTDATA.gz env.bash komakai_suuji tmp/ usppub
これをシェルスクリプトで起動してみます。
ueda@remote:~$ cat hoge.bash
#!/bin/bash
l
このようにエラーが出ます。
ueda@remote:~$ ./hoge.bash
./hoge.bash: 行 3: l: コマンドが見つかりません
私の方に勘違いがあるかもしれません。あとまあ、人のコードを試すときはバックアップは必須です。と言いますか、バックアップはいつも必須です。
以上です。