trash icon indicating copy to clipboard operation
trash copied to clipboard

[linux] EISDIR: illegal operation on a directory

Open haggholm opened this issue 5 years ago • 6 comments

trash (invoked, in my case, via trash-cli) does not seem to work on directories in Linux (in my case, Ubuntu 19.10).

$ trash {src,test,build}/**/*.{js,d.ts,map}
Error: EISDIR: illegal operation on a directory, copyfile '/builds/build/es6' -> '/root/.local/share/Trash/files/c862ddbe-a1f8-4589-b545-fe260f81e2e9'

haggholm avatar Feb 04 '20 18:02 haggholm

I don't have Linux available, so I won't be able to look into this, unfortunately.

sindresorhus avatar Feb 05 '20 19:02 sindresorhus

I can’t say I’ve entirely solved it yet, but I took some time to try to at least narrow the issue down.

The problem seems to be in lib/linux.js, specifically the call to make-dir, and related to permissions. I happen to keep the project I’m encountering this in on a separate partition from my home directory, on a scratch drive /mnt/scratch/bla/bla/.... /mnt/scratch is writable only by root, not my user account. Since there is no .Trash... directory on this partition, it seems trash attempts to create one, and fails due to permissions. If I copy a checkout of trash-cli byte for byte, it runs fine from under my home directory and fails under /mnt/scratch. (And I was confused for a while because the tests of trash itself pass just fine even after I added a failing case for trash-cli—but then I realised it creates and works from a temp dir.)

To be honest, I do not know what the behaviour ought to be when trashing something on this partition. Is it supposed to fail? Should it perhaps use my default trash directory, as in xdgTrashdir.all()? Should it try to create a ‘local’ one and fall back to the default? Is my setup just basically broken in terms of trash directory setup?

I’m also not sure if this is the same behaviour I’ve seen in all cases/on all machines, but it's definitely a potential cause of failure. Please let me know if I can be of any more help—running test cases or whatever.

haggholm avatar Feb 13 '20 00:02 haggholm

Also experiencing this in a docker container.

mattcorner avatar May 19 '20 03:05 mattcorner

experiencing this in Ubuntu 18.04 on WSL2 on Windows 2 i swear it used to work just fine. odd

jakedowns avatar Dec 01 '20 02:12 jakedowns

In case anyone isn't aware, you can bypass the alias via: \rm

daniel347x avatar Dec 28 '20 21:12 daniel347x

Had the same issue, but it was a permission problem.

I did transpile the code and so a build folder was created. In the Dockerfile I had COPY . ., so this build folder was copied in the docker, and the OS panicked since the user who created the folder was different.

HTH

gRizzlyGR avatar Mar 05 '24 20:03 gRizzlyGR