Когда я запускаю, echo $SHELL
вывод говорит, /bin/tcsh
что я запускаю tcsh
оболочку. Но, например, когда я запускаю следующую команду
alias emacs 'emacs -nw'
Я получаю следующую ошибку:
bash: alias: emacs: not found
bash: alias: emacs -nw: not found
и когда я выпускаю alias emacs="emacs -nw"
это работает нормально!
Это сбивает с толку, так как я бегу, tcsh
но команды интерпретируются bash
.
Что может быть причиной?
tcsh/csh
имеет свою текущую оболочку в$shell
Ответы:
$SHELL
это не обязательно ваша текущая оболочка, это оболочка входа по умолчанию . Чтобы проверить используемую оболочку, попробуйтеЭто должно работать на самых последних версиях Unix / Linux с
ps
поддержкой синтаксиса BSD. В противном случае это портативный (POSIX) способЭто должно вернуть что-то вроде этого, если вы работаете
tcsh
:Если вы хотите
tcsh
использовать оболочку по умолчанию, используйте ееchsh
для установки.источник
chsh
,.bashrc
будет считываться , только если вы i) запускаете bash и ii) запускаете ее как интерактивную оболочку, не входящую в систему. Как вы входите в эту машину?ps $$
Из командной строки вы также можете использовать
$0
переменную, чтобы определить, какую оболочку вы используете. например:Примечание: вы не можете определить оболочку, используя $ 0 внутри скрипта, потому что $ 0 будет сам скрипт.
источник
Это работает для Linux:
или, если вам нужен более сильный выбор (больше систем):
источник
Это поправка ко всем лучшим ответам выше. У меня была крошечная проблема, идентифицирующая черту в одной точке; казалось правильным поделиться:
Хорошо для устранения неполадок в труднодоступных местах это все. Приветствия.
источник