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 The `process.argv` property returns an array containing the command line
arguments passed when the Node.js process was launched. The first element will 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 be [`process.execPath`]. See `process.argv0` if access to the original value of
JavaScript file being executed. The remaining elements will be any additional `argv[0]` is needed. The second element will be the path to the JavaScript
command line arguments. file being executed. The remaining elements will be any additional command line
arguments.
For example, assuming the following script for `process-args.js`: For example, assuming the following script for `process-args.js`:
@ -486,6 +487,22 @@ Would generate the output:
4: four 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) ## process.chdir(directory)
<!-- YAML <!-- YAML
added: v0.1.17 added: v0.1.17

5
lib/internal/bootstrap_node.js

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

Loading…
Cancel
Save