[CentOS] PHP 5.3: IUS vs CentOS repos
Stephen Harris
lists at spuddy.org
Sat Aug 20 13:02:47 UTC 2011
On Sat, Aug 20, 2011 at 01:49:12PM +0100, Always Learning wrote:
>
> On Sat, 2011-08-20 at 07:43 -0400, Robert Heller wrote:
>
> > (I did some magic with rpm -qa php\* & sed to get the proper list of
> > stuff to remove and then install.)
>
> One does not require the '\'
Yes you do. Especially if there are any files in the directory that would
match php*. Basically the shell will attempt to do glob expansion on php*
(so if you have php.ini and php.conf in the directory then it'll expand
to those). Only if no files match will it leave the php* as php*.
So general good practice is to _always_ quote * (and ?) characters on
command lines. You can either \ the character or put the whole thing
inside '
eg
rpm -qa 'php*'
or
rpm -qa php\*
But
rpm -qa php*
is considered bad and _may_ break and should not be used. It's just bad
practice.
Watch:
$ ls
$
So an empty directory. We'd expect the command to work...
$ rpm -qa php*
php-mbstring-5.1.6-27.el5_5.3
php-common-5.1.6-27.el5_5.3
php-cli-5.1.6-27.el5_5.3
php-5.1.6-27.el5_5.3
Yup! So far so good. Now let's create some random files...
$ touch php.foobar php.ini php.baz
$ rpm -qa php*
$
Huh, no results. Let's debug...
$ set -x
$ rpm -qa php*
+ rpm -qa php.baz php.foobar php.ini
$
You can see the shell has done what I described; php* has been expanded
(since it's a file glob) to the files in the directory that matched
Quoting solves the problem:
$ rpm -qa php\*
+ rpm -qa 'php*'
php-mbstring-5.1.6-27.el5_5.3
php-common-5.1.6-27.el5_5.3
php-cli-5.1.6-27.el5_5.3
php-5.1.6-27.el5_5.3
(Debug mode was still on, so you can see how the shell handled it).
Conclusion: when using * (or ?) on the command line, ALWAYS quote it to
avoid unexpected side effects.
--
rgds
Stephen
More information about the CentOS
mailing list