From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21674 invoked by alias); 3 Jan 2018 11:54:43 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: List-Unsubscribe: X-Seq: 42206 Received: (qmail 28419 invoked by uid 1010); 3 Jan 2018 11:54:43 -0000 X-Qmail-Scanner-Diagnostics: from mailout1.w1.samsung.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(210.118.77.11):SA:0(-6.9/5.0):. Processed in 3.806734 secs); 03 Jan 2018 11:54:43 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,T_DKIM_INVALID, T_RP_MATCHES_RCVD autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: p.stephenson@samsung.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20180103114729euoutp01d43b5be621821163ed8b194dbdf9ce1e~GSlQMiEX21424414244euoutp018 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1514980049; bh=hUiagx/KO1XKTpwQcu0TYRfaoz1DKPfQfJm+Ti+1kr8=; h=Date:From:To:Subject:In-reply-to:References:From; b=cXsUCR3KKNmopkqCw49XjTnnI0Roo19nJ8EvkVZs+HDKXOei1CyPUA5Rv+5OWdczB GrY+KH6dLkyThJ+A83FR2AwA1rtpBRNgl8Oc9ucTuFQbSH5REMxws53+RSlYwHbw+z MvgFg1IUr1Uu1oAOmJDUx1LuzjYilxnDpVLZ2jYs= X-AuditID: cbfec7f1-f793a6d00000326b-a9-5a4cc2d07dd0 Date: Wed, 03 Jan 2018 11:47:25 +0000 From: Peter Stephenson To: Zsh hackers list Subject: Re: How should empty aliases work? Message-id: <20180103114725.1330ba49@pwslap01u.europe.root.pri> In-reply-to: Organization: Samsung Cambridge Solution Centre X-Mailer: Claws Mail 3.7.9 (GTK+ 2.22.0; i386-redhat-linux-gnu) MIME-version: 1.0 Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrHIsWRmVeSWpSXmKPExsWy7djP87oXDvlEGVx/o25xsPkhkwOjx6qD H5gCGKO4bFJSczLLUov07RK4Mu7PfclcsJar4vKumAbG6RxdjJwcEgImEkfuLWGHsMUkLtxb z9bFyMUhJLCUUeLVrRUsEE4vk8SW47MZYTrOT22FSixjlNj+9QEzhDONSeL9yptMEM5pRomd E89ADTvDKNF58h4LSD+LgKrE9YmrwWaxCRhKTN0EMVdEQEtix8mTTCC2sIC2xIMlzawgNq+A vcT1z1vAejkFgiUWTdsMZvML6Etc/fuJCeIme4mZV84wQtQLSvyYDLGLWUBHYtu2x+wQtrzE 5jVvwU6VEJjDJjH16REghwPIcZFonx0NMUdY4tXxLdDQkJHo7DgINb+fUeJJty9E7wxGidNn drBBJKwl+m5fZIRYwCcxadt0qJm8Eh1tQhAlHhKffjYzQ9iOEk1fe6Eh9JpR4u+RbUwTGBVm Ibl7FpK7ZyG5ewEj8ypGkdTS4tz01GIjveLE3OLSvHS95PzcTYzAVHD63/GPOxjfn7A6xCjA wajEw8vR5x0lxJpYVlyZe4hRgoNZSYTXLcsnSog3JbGyKrUoP76oNCe1+BCjNAeLkjivbVRb pJBAemJJanZqakFqEUyWiYNTqoFRsv/UNq3nesVzPyg5H8mov+uYMXXCJf0nvjftzMTsp4mx dGUoz2K5lsbfcbZszoTnL/7lR+c72grPaVKKs09OU52a/7lIPn5C6xy5DQ/ahZ7d5rA1kXrw 4vMsNsepDvvWGfftY98ZdHPW9k3qGssuaU8VmNI84anXkwnPRFfPey237JfQ2zuJSizFGYmG WsxFxYkAVdV9bQEDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrPLMWRmVeSWpSXmKPExsVy+t/xy7oXDvlEGcyaz2JxsPkhkwOjx6qD H5gCGKO4bFJSczLLUov07RK4Mu7PfclcsJar4vKumAbG6RxdjJwcEgImEuentrJA2GISF+6t ZwOxhQSWMEpc3JnXxcgFZM9gklj5ZzUjhHOaUeL88ZOsEM4ZRolnW7YwgrSwCKhKXJ+4Gsxm EzCUmLppNpgtIqAlsePkSSYQW1hAW+LBkmZWEJtXwF7i+uctYKs5BYIl7rWugdrwllFiw4LX YAl+AX2Jq38/MUHcZy8x88oZRohmQYkfk++B1TADLdi8rYkVwpaX2LzmLTPED+oSN+7uZp/A KDwLScssJC2zkLQsYGRexSiSWlqcm55bbKhXnJhbXJqXrpecn7uJERjM24793LyD8dLG4EOM AhyMSjy8HH3eUUKsiWXFlbmHGCU4mJVEeN2yfKKEeFMSK6tSi/Lji0pzUosPMUpzsCiJ8/bu WR0pJJCeWJKanZpakFoEk2Xi4JRqYLSY1qt8KlV8l06Kwq/dtm/v7v+7dbfIDHWW2W+k302f qyx1kf9BwIFjl89t7OCWi/RXkzR78ZB3UpX0/4uGPn0Xlyybtncu3/P8cM01MSnO8iu2pjdc 9NF1D2lJK+M9LPf79vFrCsL30tatPmZVv+aNZ/D8pkoTje0/zf80Kjuf/XtHNH0jm5YSS3FG oqEWc1FxIgDENFrcYgIAAA== X-CMS-MailID: 20180103114728eucas1p19e65b30bff74cd2fa51ce2c4d105373a X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20171230011519epcas5p42158c41e36e278fe83d86257f419cd74 X-RootMTR: 20171230011519epcas5p42158c41e36e278fe83d86257f419cd74 References: On Fri, 29 Dec 2017 17:14:38 -0800 Bart Schaefer wrote: > On Fri, Dec 29, 2017 at 12:30 AM, Bart Schaefer > wrote: > > > > % alias empty='' > > % alias output='empty echo' > > % alias echo='print -r bar' > > % output foo > > > > What actually happens is that "echo" expands and "print -r bar foo" is > > executed. If that's correct, can someone explain why? > > I think the answer is that being a word in command position has > precedence over being a word preceded by an alias replacement. Words > in command position are always alias-replaceable; words not in command > position are alias-replaceable if preceded by an alias replacement > that ended with a space. > > So when "empty" disappears, it leaves "echo" in command position and > the first clause applies even though the second clause does not. Yes, when we get to "echo" we have no remaining knowledge that we've expanded an alias. The documentation simply refers to an alias being expanded "if it is in command position [or a global alias]", with no reference to preceding aliases. So I think everything is as it should be. Consider also alias foo="echo alias expanded;" % foo foo alias expanded alias expanded which is just following the same rules. pws