Zachary explicou a origem do problema.
Enquanto você pode contornar isso com
tty=$(tty)
tty_without_dev=${tty#/dev/}
who | grep -v "$tty_without_dev"
Isso seria errado, por exemplo, se esse tty for pts/1 , você acabaria excluindo todas as linhas contendo pts/10 . Algumas implementações grep têm uma opção -w para fazer uma pesquisa de palavras
who | grep -vw pts/1
não corresponderia a pts/10 porque o pts/1 não é seguido por um caractere que não seja de palavra.
Ou você pode usar awk para filtrar o valor exato do segundo campo, como:
who | awk -v "tty=$tty_without_dev" '$2 != tty'
Se você quiser fazer isso em um comando:
{ who | awk -v "tty=$(tty<&3)" '$2 != substr(tty,6)'; } 3<&0
O stdin original sendo duplicado no descritor de arquivo 3 e restaurado para o comando tty .