Browse Source

process: save original argv[0]

For historical and other reasons, node overwrites `argv[0]` on startup.
See
 - 2c6f79c08,
 - https://github.com/nodejs/node/issues/7434
 - https://github.com/nodejs/node/pull/7449
 - https://github.com/nodejs/node/pull/7696

For cases where it may be useful, save the original value of `argv[0]`
in `process.argv0`

PR-URL: https://github.com/nodejs/node/pull/7696
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
v7.x
Pat Pannuto 9 years ago
committed by Anna Henningsen
parent
commit
a804db1af7
No known key found for this signature in database GPG Key ID: D8B9F5AEAE84E4CF
  1. 23
      doc/api/process.md
  2. 5
      lib/internal/bootstrap_node.js

23
doc/api/process.md

@ -457,9 +457,10 @@ added: v0.1.27
The `process.argv` property returns an array containing the command line
arguments passed when the Node.js process was launched. The first element will
be [`process.execPath`]. The second element will be the path to the
JavaScript file being executed. The remaining elements will be any additional
command line arguments.
be [`process.execPath`]. See `process.argv0` if access to the original value of
`argv[0]` is needed. The second element will be the path to the JavaScript
file being executed. The remaining elements will be any additional command line
arguments.
For example, assuming the following script for `process-args.js`:
@ -486,6 +487,22 @@ Would generate the output:
4: four
```
## process.argv0
<!-- YAML
added: REPLACEME
-->
The `process.argv0` property stores a read-only copy of the original value of
`argv[0]` passed when Node.js starts.
```js
$ bash -c 'exec -a customArgv0 ./node'
> process.argv[0]
'/Volumes/code/external/node/out/Release/node'
> process.argv0
'customArgv0'
```
## process.chdir(directory)
<!-- YAML
added: v0.1.17

5
lib/internal/bootstrap_node.js

@ -50,6 +50,11 @@
_process.setupRawDebug();
Object.defineProperty(process, 'argv0', {
enumerable: true,
configurable: false,
value: process.argv[0]
});
process.argv[0] = process.execPath;
// There are various modes that Node can run in. The most common two

Loading…
Cancel
Save