---
name: "global"
section: "n"
platform: "linux"
package: "tcl"
version: "8.6.16-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/global/n"
---

# global(n)

Access global variables

```

```

## NAME

global - Access global variables

## SYNOPSIS

**global** ?*varname ...*?

```

```

## DESCRIPTION

This command has no effect unless executed in the context of a proc body. If the **global** command is executed in the context of a proc body, it creates local variables linked to the corresponding global variables (though these linked variables, like those created by **upvar**, are not included in the list returned by **info locals**).

If *varname* contains namespace qualifiers, the local variable's name is the unqualified name of the global variable, as determined by the **namespace tail** command.

*varname* is always treated as the name of a variable, not an array element.  An error is returned if the name looks like an array element, such as **a(b)**.

## EXAMPLES

This procedure sets the namespace variable *::a::x*

```
proc reset {} {
    global a::x
    set x 0
}
```

This procedure accumulates the strings passed to it in a global buffer, separated by newlines.  It is useful for situations when you want to build a message piece-by-piece (as if with **puts**) but send that full message in a single piece (e.g. over a connection opened with **socket** or as part of a counted HTTP response).

```
proc accum {string} {
    global accumulator
    append accumulator $string \n
}
```

## SEE ALSO

[namespace(n)](/namespace/n.md), [upvar(n)](/upvar/n.md), [variable(n)](/variable/n.md)

## KEYWORDS

global, namespace, procedure, variable
