Я столкнулся с приведенной ниже строкой кода в файле сценария оболочки.Что означает cd "some path"> & - означает?
cd "some path" >&-
Может ли кто-нибудь помочь найти смысл?
Я столкнулся с приведенной ниже строкой кода в файле сценария оболочки.Что означает cd "some path"> & - означает?
cd "some path" >&-
Может ли кто-нибудь помочь найти смысл?
stdout закрыт. См. Redirections (Дублирование дескрипторов файлов). Это не имеет никакого смысла в вашем примере, потому что cd
не записывает stdout в любом случае.
Кроме того, я бы не предложил закрыть 'stdout' /' stderr'. Если процесс пытается записать эти дескрипторы файлов (например, 'ls> & -'), это даст вам такие ошибки, как 'ls: write error: Bad file descriptor'. Я предпочел бы рекомендовать перенаправить эти 2 FD на '/ dev/null' – anishsane
**' cd' в любом случае не записывается в 'stdout'. ** Это ** NOT ** true. попробуйте это: 'cd ~; CDPATH = /; cd usr> & - 'Если' cd' проходит через пути 'CDPATH', то каталог назначения записывается в' stdout'. Этот механизм CDPATH обычно не используется, но это стоит отметить. – anishsane
'man bash' поиск дублирующих дескрипторов файлов и дескрипторов файловых файлов – xxfelixxx
Интересно, что справочная страница bash (по крайней мере, в моей версии), похоже, не определяет смысл этой конструкции, но AFIK означает, что stdout закрыт для этой команды. Вы можете попробовать его с помощью 'echo xxxx> &-'; bash будет жаловаться на сообщение об ошибке, потому что' echo' хочет записать в stdout, и этот дескриптор файла закрыт. Однако 'cd' не записывает в stdout, и если это произойдет, вы получите сообщение об ошибке, так что я не совсем понимаю причину этой конструкции. – user1934428
(Just FYI): ** 'cd' не записывается в' stdout' ** Это ** NOT ** true. попробуйте это: 'cd ~; CDPATH = /; cd usr> & - 'Если' cd' проходит через пути 'CDPATH', каталог назначения записывается в' stdout'. Этот механизм CDPATH обычно не используется, но это стоит отметить. – anishsane