Откуда в моем терминале берутся псевдонимы

Ожидается, что будет создан файл someFile.txt . Содержит ли что-нибудь этот файл или нет, зависит от того, что должна делать ваша программа foo .

С какой бы проблемой вы не столкнулись, похоже, она не связана с перенаправлением вывода. Вы можете попробовать следующую команду в качестве теста:

cat > someFile.txt

введите что-нибудь. Все, что вы набираете, будет перенаправлено в someFile.txt (оканчивается на ctrl + d ).

Кстати, выходной файл создается вашей оболочкой, а не вашей программой foo . Даже если вы наберете несуществующую команду, выходной файл все равно будет создан (пуст):

/bin/nonexistent > zzz
2
04.02.2017, 13:41
3 ответа

Вот отрывок из документации для bash:

Когда bash вызывается как интерактивная оболочка входа или как неинтерактивная оболочка с параметром - login , она сначала считывает и выполняет команды из файла / etc / profile , если этот файл существует. После чтения этого файла он ищет ~ / .bash_profile , ~ / .bash_login и ~ / .profile , в этом порядке, и читает и выполняет команды из первого, который существует и доступен для чтения. - noprofile Параметр может использоваться при запуске оболочки, чтобы запретить это поведение.

Поскольку вы уже проверили содержимое .bashrc и .bash_profile в своем домашнем каталоге, вероятно, это ответ на ваш вопрос лежать в файле / etc / profile ; некоторые дистрибутивы устанавливают значения по умолчанию для всех пользователей, включая псевдонимы. В противном случае эта конфигурация может быть в одном из других файлов, упомянутых в приведенном выше отрывке .

3
27.01.2020, 21:54

Я использую 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 специально для вас.

1
27.01.2020, 21:54

Попросите bash распечатать трассировку команд, которые он запускает при запуске.

bash -x

Трассировка показывает команды только по мере их выполнения, но не показывает, из какого файла они берутся. Но они должны поступать из файла, который читает bash: сначала /etc/bash.bashrc (если он включен в вашей системе), затем ~ / .bashrc , а также любые дополнительные файлы получен с помощью команды . или источник , который, если он используется, появляется на трассе.

Если псевдонимы не отображаются при запуске простого bash , только в оболочке входа , то они определены не в том месте, и вам следует переместить их в ~ / .bashrc . Чтобы выяснить, откуда они в настоящее время загружены, запустите экземпляр входа в систему bash с трассировкой: bash -l -x

2
27.01.2020, 21:54

Теги

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