the difference is?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers the difference is?
# 8  
Old 12-02-2010
It's a kneejerk reaction to blame BASH for society's ills these days, I'm getting a bit tired of it.
Quote:
Originally Posted by Praveen_218
I guess, its usually ignored by the bash.
I guess you'd be wrong, but I don't have to guess, I have strace. stracing bash doing cat ///etc///passwd gets:
Code:
[pid  3593] execve("/bin/cat", ["cat", "///etc///passwd"], [/* 27 vars */]) = 0

i.e. BASH feeds that string into cat unmolested. Also check this:
Code:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    int fd=open("///etc///passwd", O_RDONLY);
    printf("fd=%d\n", fd);
    if(fd >= 0) close(fd);
    return(0);
}

open() itself swallows the extra slashes.

Of course, this is on a linux system. Let's try OSX, which at heart is still BSD:

Code:
# OSX defaults to bash
$ mkdir -p path/to/this
$ ls -l path/to/this
$ ls -l path///to///this
# ...but he's got lots of shells installed.
$ exec ksh
$ ls -l path/to/this
$ ls -l path///to///this
$ exec csh
% ls -l path/to/this
% ls -l path///to///this
% exec zsh
% ls -l path/to/this
% ls -l path///to///this
%

We can even do this:
Code:
> dir "c:/"
 Volume in drive C has no label.
 Volume Serial Number is 503A-5695

 Directory of c:\

....

> dir "c://////////////////////////////////////"
 Volume in drive C has no label.
 Volume Serial Number is 503A-5695

 Directory of c:\

....

> dir "c:\"
 Volume in drive C has no label.
 Volume Serial Number is 503A-5695

 Directory of c:\

....

> dir "c:\\\\\\"
The filename, directory name, or volume label syntax is incorrect.
>

So even Windows CMD of all things swallows multiple slashes happily when processing UNIX-style paths because Microsoft is such a stickler for cross-platform compatibility. But not when processing normal paths, oddly.

Three operating systems, five shells -- this is not a "BASH-ism". I suspect this behavior is actually more common than rejecting them just because it's so easy to get extra slashes in things when scripting. Has anyone observed Solaris, HP-UX, AIX etc. rejecting them?

Last edited by Corona688; 12-02-2010 at 02:17 PM..
# 9  
Old 12-02-2010
Solaris definitely and AIX, HP-UX, most if not all other Unix certainly ignore these extra slashes. Doing otherwise would be a bug as the Unix specification states "non-leading sequences of two or more slashes are treated as a single slash".
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk to calculate difference of split and sum the difference

In the awk I am trying to subtract the difference $3-$2 of each matching $4 before the first _ (underscore) and print that value in $13. I think the awk will do that, but added comments. What I am not sure off is how to add a line or lines that will add sum each matching $13 value and put it in... (2 Replies)
Discussion started by: cmccabe
2 Replies

2. Shell Programming and Scripting

Get difference

Hi .. I am trying to create one function. It will have two arguments. Argument1: a,b,d,f,g Argument2:21212,sfsd,4546,67867,a,asda,b So the output will be Argument1 - Argument2 which is d,f,g Can anyone help with this one? (4 Replies)
Discussion started by: Anupam_Halder
4 Replies

3. Programming

what is the main difference between difference between using nonatomic lseek and O_APPEND

I think both write at the end of the file ...... but is there a sharp difference between those 2 instruction ..... thank you this is my 3rd question today forgive me :D (1 Reply)
Discussion started by: fwrlfo
1 Replies

4. UNIX for Dummies Questions & Answers

Difference between sh and ./

Hi All Can any body please tell me what is difference between sh scr ./scr Here scr is a script. (1 Reply)
Discussion started by: parthmittal2007
1 Replies

5. UNIX for Dummies Questions & Answers

Difference between

$x=10 and providing the spaces between = and 10 $x= 10 (4 Replies)
Discussion started by: shashank1311
4 Replies

6. Shell Programming and Scripting

Difference between 1,$ and /g

just wondering what the difference is between 1,$ and /g when doing a substitution in vi. doesn't seem to be much difference from what i can see. (2 Replies)
Discussion started by: bigubosu
2 Replies

7. UNIX for Advanced & Expert Users

difference

difference b/w shell scripting and perl scripting (2 Replies)
Discussion started by: simmijaswal
2 Replies

8. Shell Programming and Scripting

Difference between $* and $@

Somebody please tell me the difference between $@ and $* Thanks in advance. Saneesh Joseph (1 Reply)
Discussion started by: saneeshjose
1 Replies

9. Linux

what is the difference between -h and -H ?

samba:/home/backup # df -h /home/ Filesystem Size Used Avail Use% Mounted on /dev/sdb2 34G 8.6G 26G 26% /home samba:/home/backup # df -H /home/ Filesystem Size Used Avail Use% Mounted on /dev/sdb2 37GB 9.2GB 28GB 26% /home what... (2 Replies)
Discussion started by: cw1972
2 Replies

10. UNIX for Dummies Questions & Answers

Where is the difference?

Hello I would like to know where there is a difference between these two machines? HP9000-735/125 HP9000-B132L What does that all mean? Okay, HP= Hewlett Packard But 9000, 725/125, B132L ???? I am asking that question because I am about to buy one for myself, so I can have some fun... (3 Replies)
Discussion started by: Fwurm
3 Replies
Login or Register to Ask a Question