13

I try echo $GID but get nothing. However, I can get 1000 by using id -g, what's the differences between them ?

id -u     => 1000
id -g     => 1000
echo $UID => 1000
echo $GID => 

The output of id:

uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare),999(docker)

The output of groups:

user adm cdrom sudo dip plugdev lpadmin sambashare docker

Ubuntu version:

Distributor ID: Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:    16.04
Codename:   xenial
Prvt_Yadav
  • 444
  • 8
  • 17
Corey
  • 287
  • 3
  • 6
  • 17

1 Answers1

15

I assume you're using bash as your shell. Bash doesn't set a GID variable. The list of Bash variables mentions EUID and UID, but not GID.

Zsh, on the other hand, does set GID:

$ bash -c 'echo $GID'

$ zsh -c 'echo $GID'
1000
Olorin
  • 3,468
  • 18
  • 29
  • What's the differences between using `bash -c 'echo $GID'` and `echo $GID` in terminal ? – Corey Mar 11 '19 at 06:42
  • 2
    @Corey `echo $GID` in my terminal would run it in zsh, since I use zsh as my shell. In your terminal, it might be run in bash. I use `bash -c ...` to run the command specifically in bash. – Olorin Mar 11 '19 at 06:46
  • Got it, thanks. Is there any way in bash to get `GID` except `id -g` ? – Corey Mar 11 '19 at 06:48
  • 2
    @Corey use command `cat /etc/group | grep ^your_group_name | cut -d: -f3` – Prvt_Yadav Mar 11 '19 at 06:54
  • Is it a good idea to use `$GROUPS` as a replacement ? – Corey Mar 11 '19 at 06:59
  • 1
    @Corey if you're using bash, possibly. But I don't know if it's guaranteed to hold your GID as the first element of the array. – Olorin Mar 11 '19 at 07:07