シェルスクリプト内ではエイリアスは効かないのでは・・・

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: コマンドが見つかりません

私の方に勘違いがあるかもしれません。あとまあ、人のコードを試すときはバックアップは必須です。と言いますか、バックアップはいつも必須です。

以上です。

ノート   このエントリーをはてなブックマークに追加 
 

prev:本日も本(シェルスクリプト高速開発手法入門)の話 next:Structure and Interpretation of Computer Programs読書会21回目メモ書き

やり散らかし一覧

記事いろいろ