[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
multi-line alias executed out of order
From: |
Andrew Martin |
Subject: |
multi-line alias executed out of order |
Date: |
Mon, 16 Dec 2013 21:33:41 -0700 |
Configuration Information [Automatically generated, do not change]:Machine:
x86_64OS: linux-gnuCompiler: gccCompilation CFLAGS: -DPROGRAM='bash'
-DCONF_HOSTTYPE='x86_64' -DCONF_OSTYPE='linux-gnu'
-DCONF_MACHTYPE='x86_64-pc-linux-gnu' -DCONF_VENDOR='pc'
-DLOCALEDIR='/usr/share/locale' -DPACKAGE='bash' -DSHELL -DHAVE_CONFIG_H -I.
-I../bash -I../bash/include -I../bash/lib -D_FORTIFY_SOURCE=2 -g -O2
-fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security
-Walluname output: Linux ubuntu 3.11.0-12-generic #19-Ubuntu SMP Wed Oct 9
16:20:46 UTC 2013 x86_64 x86_64 x86_64 GNU/LinuxMachine Type:
x86_64-pc-linux-gnu
Bash Version: 4.2Patch Level: 45Release Status: release
Description:In a multi-line alias, where entries are separated by semi-colon,
"source" commands are not executed in-step with all the other commands. After
all the non "source" commands are executed, the "source" commands are executed
in reverse order. See below for an example.
Repeat-By:
ubuntu@ubuntu:~$ cat script.sh#!/bin/bash(echo -n "$1 "; date
+%S.%N)ubuntu@ubuntu:~$ alias foo1alias foo1='~/script.sh one; source
~/script.sh two; source ~/script.sh three; ~/script.sh four'ubuntu@ubuntu:~$
alias foo2alias foo2='~/script.sh one;source ~/script.sh two;source ~/script.sh
three;~/script.sh four;'ubuntu@ubuntu:~$ foo1one 09.742581873two
09.745315889three 09.749212492four 09.761410711ubuntu@ubuntu:~$ foo2one
11.805819275four 11.819741270three 11.828260887two 11.829470548
Fix:
Use a single-line alias. Or use the "&&" operator to chain commands (which
changes the functionality to be short-circuit evaluations).
Also verified this behavior on RHEL6 with bash 4.1.2(1).
Thanks!Andrew Martin
- multi-line alias executed out of order,
Andrew Martin <=