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

1 Answer 1


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'
  • What's the differences between using bash -c 'echo $GID' and echo $GID in terminal ?
    – Corey
    Commented Mar 11, 2019 at 6: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
    Commented Mar 11, 2019 at 6:46
  • Got it, thanks. Is there any way in bash to get GID except id -g ?
    – Corey
    Commented Mar 11, 2019 at 6:48
  • 2
    @Corey use command cat /etc/group | grep ^your_group_name | cut -d: -f3
    – Prvt_Yadav
    Commented Mar 11, 2019 at 6:54
  • 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
    Commented Mar 11, 2019 at 7:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .