Различия в перенаправлении между и>> и и 2> &1

Ваш .profile, как любой “точечный файл” (конфигурационный файл, имя которого начинается с a .), расположен в Вашем корневом каталоге. Это - каталог по умолчанию, когда Вы входите в систему, можно использовать cd команда без аргумента для возврата туда, и можно использовать ~ как ярлык на него, например, можно обратиться к Вашему .profile как ~/.profile каков текущий каталог.

Если Ваш .profile отсутствует, система ведет себя, как будто это было пусто (дело обстоит так для большинства точечных файлов). Таким образом, если Вы хотите добавить что-то, создайте файл при необходимости. Используйте текстовый редактор по Вашему выбору.

Добавление echo $PATH кому: .profile бесполезно, и даже плохая идея, потому что она может повредить удаленные инструменты копирования файла такой как rsync. Я не понимаю то, что Вы пытаетесь сделать. Если Вы хотите добавить каталог к Вашему PATH, вставьте это Ваш ~/.profile:

PATH=$PATH:/some/extra/directory

Это добавляет указанный каталог в последний раз в пути поиска. Или если Вы хотите добавить подкаталог bin от Вашего корневого каталога до передней стороны пути поиска:

PATH=~/bin:$PATH

Некоторые старинные оболочки требуют дополнительной строки export PATH, но я думаю даже на SCO, это не необходимо это тысячелетие.

12
23.05.2017, 15:40
1 ответ

Так как вы пометили ZSH , позвольте мне сказать, что все 3 перенаправления работают точно так же. Как вы могли бы прочитать как в дубликатах (тот, кто в комментарии и тот, кто в вашем посте), все они перенаправляют STDERR на STDOUT , которые Inturn перенаправляется в файл ' logfile '(т.е. logfile будет содержать как вывод, так и ошибки).

Но их поведение изменяется много в зависимости от оболочки, в которой вы находитесь.

Все три стиля перенаправления хорошо работают хорошо в Bash и ZSH

, но:

Только > & работает в CSH или TCSH

[soum@server ~]$  ./test.sh > logfile 2>&1
Ambiguous output redirect.
[soum@server ~]$ ./test.sh &> logfile
Invalid null command.
[soum@server ~]$ ./test.sh >& logfile
[soum@server ~]$ echo $SHELL
/bin/tcsh
[soum@server ~]$

в KSH , работает только 2> & 1 .

$ ./test.sh >& logfile
-ksh: logfile: bad file unit number
$ ./test.sh &> logfile
[1]     23039
$ 1  2  3  4  5  6  logfile  test.sh
ls: cannot access ttr: No such file or directory

[1] +  Done(2)                 ./test.sh &> logfile

Я ненавижу КШ . В то время как > & просто дал ошибку, в и> и> [112349] и> [112349] - это часть команды и опустошила logfile (если не пусто).

7
27.01.2020, 19:56

Теги

Похожие вопросы