Поскольку выполнение файла не меняет текущий рабочий каталог вашего процесса на каталог файла.
Исполняемый файл может сделать это после выполнения. Например, я иногда делаю:
cd "$(dirname "$0")"
в своем скрипте, чтобы убедиться, что мой текущий рабочий каталог является каталогом исполняемого файла, но это не обязано.
Третий пример, который вы показали, где вы пытаетесь rm
файл выглядит так, что команда rm
перегружена последовательностью команд, одна из которых пытается выполнить mv
файла для /export/.trash
.
[martin@A08-R32-I196-2-FZ1RLP2 anaconda3]$ rm test2.ipynb mv: cannot create regular file ‘/export/.trash/test2.ipynb’: Permission denied
Посмотрите разрешения для/export/.trash/
:
$ ls -ld /export/.trash
Все должно принадлежать вашему пользователю martin, чтобы эта учетная запись могла удалять файлы и, при необходимости, mv
их в этот каталог.
Я подозреваю, что кто-то использовал команду sudo
при работе в этом каталоге и, возможно, случайно,установите права доступа к каталогу .trash
так, чтобы им владел root.
Относительно вашей команды rm
. Вы можете проверить, был ли он перегружен как псевдоним или функция оболочки с тем же именем, используя команду type
. Примеры:
$ type -f rm
rm is aliased to `rm -i'
$ type -f mv
mv is aliased to `mv -i'
Здесь мы видим, что команды mv
и rm
были перегружены как псевдонимы для mv -i
и rm -i
.
Я согласен с тем, что вывод из rm
указывает, что rm
является псевдонимом или функцией, выполняющей что-то еще, судя по имени пути, похоже, она пытается переместиться в папку для мусора вместо удаления.
Чтобы ответить на исходный вопрос, группа 0(wheel
)в основном ничего не значит. В системах на основе BSD su
(, а неsudo
)для root, ограничено членами группы wheel
, но это просто функция команды su
в BSD, а не функция самой ОС.
Команда sudo
обычно используется в Linux. Он легко настраивается. Членство в группе 0 может быть обязательным требованием для использования sudo
, но не использует sudo
автоматически.