tags:

views:

43

answers:

3

Hi, I have a Vista share visible in Ubuntu but I which to make the BASH color highlighting of the directories/files the same as if it were a local dir/file. How would I go about doing this?

Many thanks!

+1  A: 

This is not bash, but ls. The environment variable LS_COLORS determines colorization behavior for ls. on my machine:

justin@information-density:~$ echo $LS_COLORS
no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:.tar=01;31:.tgz=01;31:.svgz=01;31:.arj=01;31:.taz=01;31:.lzh=01;31:.lzma=01;31:.zip=01;31:.z=01;31:.Z=01;31:.dz=01;31:.gz=01;31:.bz2=01;31:.bz=01;31:.tbz2=01;31:.tz=01;31:.deb=01;31:.rpm=01;31:.jar=01;31:.rar=01;31:.ace=01;31:.zoo=01;31:.cpio=01;31:.7z=01;31:.rz=01;31:.jpg=01;35:.jpeg=01;35:.gif=01;35:.bmp=01;35:.pbm=01;35:.pgm=01;35:.ppm=01;35:.tga=01;35:.xbm=01;35:.xpm=01;35:.tif=01;35:.tiff=01;35:.png=01;35:.svg=01;35:.mng=01;35:.pcx=01;35:.mov=01;35:.mpg=01;35:.mpeg=01;35:.m2v=01;35:.mkv=01;35:.ogm=01;35:.mp4=01;35:.m4v=01;35:.mp4v=01;35:.vob=01;35:.qt=01;35:.nuv=01;35:.wmv=01;35:.asf=01;35:.rm=01;35:.rmvb=01;35:.flc=01;35:.avi=01;35:.fli=01;35:.gl=01;35:.dl=01;35:.xcf=01;35:.xwd=01;35:.yuv=01;35:.aac=00;36:.au=00;36:.flac=00;36:.mid=00;36:.midi=00;36:.mka=00;36:.mp3=00;36:.mpc=00;36:.ogg=00;36:.ra=00;36:.wav=00;36:
Each colon separated specifier indicates a kind of file / directory, and the color for display. Here is a good rundown of how LS_COLORS specifications work.

Justin Smith
Where in there does it distinguish local and remote files?
Peter Eisentraut
I am not sure. I would look at your LS_COLORS setup, it will be one of the variables before .tar, .tgz, etc. file extensions. None of the specifications are explicitly for remotely mounted files, but it is probably that they all have the exec bit, or they are all setuid, or some such, because of a limitation of the remote filesystem or a limitation of samba.
Justin Smith
A: 

If I'm remembering correctly, this happens because the special bits that ls looks at to determine file type (exec bit, dir bit, etc) are specific to Linux-style file systems. To verify this, mount a NTFS filesystem (or whatever type you are mounting over Samba) on your local machine and see if you get the same coloring behavior from ls.

bta
A: 

When you mount a windows share it gives every file/directory the same permissions. Windows doesn't have the same permissions structure as un*x and so it adds the execute permission to every file by default. The LS_COLORs environment variable (used by "ls") gives executable files the green colour.

You can alter the umask settings in the mount options so that the execute flag is not set:

mount -t smbfs -o username=USER,password=PASS,umask=111 //server/share /mnt/share

The files will then pick up the next colour precedence usually from the extension which will take you some way to achieving the results you want.

David Newcomb