Ожидается, что будет создан файл someFile.txt
. Содержит ли что-нибудь этот файл или нет, зависит от того, что должна делать ваша программа foo
.
С какой бы проблемой вы не столкнулись, похоже, она не связана с перенаправлением вывода. Вы можете попробовать следующую команду в качестве теста:
cat > someFile.txt
введите что-нибудь. Все, что вы набираете, будет перенаправлено в someFile.txt
(оканчивается на ctrl + d ).
Кстати, выходной файл создается вашей оболочкой, а не вашей программой foo
. Даже если вы наберете несуществующую команду, выходной файл все равно будет создан (пуст):
/bin/nonexistent > zzz
Вот отрывок из документации для bash:
Когда bash вызывается как интерактивная оболочка входа или как неинтерактивная оболочка с параметром
- login
, она сначала считывает и выполняет команды из файла/ etc / profile
, если этот файл существует. После чтения этого файла он ищет~ / .bash_profile
,~ / .bash_login
и~ / .profile
, в этом порядке, и читает и выполняет команды из первого, который существует и доступен для чтения.- noprofile
Параметр может использоваться при запуске оболочки, чтобы запретить это поведение.
Поскольку вы уже проверили содержимое .bashrc
и
.bash_profile
в своем домашнем каталоге, вероятно, это ответ на
ваш вопрос лежать в файле / etc / profile
; некоторые дистрибутивы устанавливают
значения по умолчанию для всех пользователей, включая псевдонимы. В противном случае эта
конфигурация может быть в одном из других файлов, упомянутых в приведенном выше отрывке
.
Я использую SUSE и могу сказать вам, что для этого дистрибутива эти псевдонимы находятся в /etc/bash.bashrc
.
А если вы используете csh или tcsh, то они будут в ] /etc/csh.cshrc
.
Они относятся к вашему дистрибутиву Linux, и не рекомендуется их изменять. Вместо этого создайте и отредактируйте /etc/bash.bashrc.local
как администратор, и вы заметите, что внизу файла /etc/bash.bashrc
он будет выполнять ] test -s /etc/bash.bashrc.local
, и если файл существует, он запустит его.
Я также ненавижу эти псевдонимы ls
. Я годами комментировал alias ls = 'ls $ LS_OPTIONS'
в /etc/bash.bashrc
. Просто имейте в виду, что когда вы исправляете свою систему и выполняете обновления ядра, этот файл /etc/bash.bashrc
может быть перезаписан, поэтому вам придется вернуться и отредактировать заново.
вы упомянули, что используете терминал bash в Windows (git-bash) , поэтому я не знаю, существует ли /etc/bash.bashrc
специально для вас.
Попросите bash распечатать трассировку команд, которые он запускает при запуске.
bash -x
Трассировка показывает команды только по мере их выполнения, но не показывает, из какого файла они берутся. Но они должны поступать из файла, который читает bash: сначала /etc/bash.bashrc
(если он включен в вашей системе), затем ~ / .bashrc
, а также любые дополнительные файлы получен с помощью команды .
или источник
, который, если он используется, появляется на трассе.
Если псевдонимы не отображаются при запуске простого bash
, только в оболочке входа , то они определены не в том месте, и вам следует переместить их в ~ / .bashrc
. Чтобы выяснить, откуда они в настоящее время загружены, запустите экземпляр входа в систему bash с трассировкой: bash -l -x