ITADN

[Bug]: Atuin xonsh init routs to /dev/null even on Windows

#3462OpenTriquetra 创建于 2026-05-02
bug
T
Triquetracommented
### 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 条评论