[Bug]: Atuin xonsh init routs to /dev/null even on Windows
bug
### What did you expect to happen?
I expected atuin to work in xonsh on Windows without error.
### What happened?
Atuin caused xonsh to throw this error:
```
xonsh: /dev/null: no such file or directory
Exception raised in event handler; ignored.
```
Full traceback:
```
Traceback (most recent call last):
File "C:\Users\david\.xonsh_env\Lib\site-packages\xonsh\procs\specs.py", line 258, in safe_open
return open(fname, mode, buffering=buffering, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/dev/null'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\david\.xonsh_env\Lib\site-packages\xonsh\events.py", line 209, in fire
rv = handler(**kwargs)
^^^^^^^^^^^^^^^^^
File "<stdin>", line 36, in _atuin_postcommand
File "C:\Users\david\.xonsh_env\Lib\site-packages\xonsh\built_ins.py", line 475, in subproc_captured_hiddenobject
return xonsh.procs.specs.run_subproc(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\david\.xonsh_env\Lib\site-packages\xonsh\procs\specs.py", line 1354, in run_subproc
specs = cmds_to_specs(cmds, captured=captured, envs=envs, in_boolop=in_boolop)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\david\.xonsh_env\Lib\site-packages\xonsh\procs\specs.py", line 1238, in cmds_to_specs
spec = SubprocSpec.build(cmd, captured=captured, env=env)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\david\.xonsh_env\Lib\site-packages\xonsh\procs\specs.py", line 794, in build
spec.resolve_redirects()
File "C:\Users\david\.xonsh_env\Lib\site-packages\xonsh\procs\specs.py", line 854, in resolve_redirects
streams = _redirect_streams(*r)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\david\.xonsh_env\Lib\site-packages\xonsh\procs\specs.py", line 331, in _redirect_streams
stdout = safe_open(loc, mode)
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\david\.xonsh_env\Lib\site-packages\xonsh\procs\specs.py", line 262, in safe_open
raise xt.XonshError(f"xonsh: {fname}: no such file or directory") from ex
xonsh.tools.XonshError: xonsh: /dev/null: no such file or directory
Exception raised in event handler; ignored.
```
The issue is that /dev/null does not exist on windows. This not only throws an error, but prevents atuin from recording the history of commands issued in xonsh. Proposed fix: use the xonsh built-in cross-platform null device:
```
import os
@(os.devnull)
```
### Atuin doctor output
```yaml
Atuin Doctor
Checking for diagnostics
Please include the output below with any bug reports or issues
{
"atuin": {
"version": "18.15.2",
"commit": "1b4eb4901d256637c75849f0e4f82e476934b922",
"sync": {
"auth_state": "Hub (authenticated)",
"records": true,
"auto_sync": true,
"last_sync": "2026-05-02 0:58:50.7254998 +00:00:00"
},
"sqlite_version": "3.46.0"
},
"shell": {
"name": "python.exe",
"default": "powershell",
"plugins": [
"atuin"
],
"preexec": "built-in"
},
"system": {
"os": "Windows",
"arch": "x86_64",
"version": "11 (26200)",
"disks": [
{
"name": "History",
"filesystem": "NTFS"
},
{
"name": "Storage",
"filesystem": "NTFS"
},
{
"name": "",
"filesystem": "NTFS"
},
{
"name": "Linux",
"filesystem": "NTFS"
}
]
}
}
xonsh: For full traceback set: $XONSH_SHOW_TRACEBACK = True
xonsh: /dev/null: no such file or directory
Exception raised in event handler; ignored.
```
### Code of Conduct
- [x] I agree to follow this project's Code of Conduct
0 条评论