В оболочке tcl я хочу сохранить переменную, в которой я нахожусь. Этот скрипт также предназначен для запуска другими, и мне нужно проверить, в какой оболочке они находятся.
Я пытался использовать exec, но у меня возникают проблемы с сохранением результатов в переменной, которую я могу сравнить со строкойВ основном я хочу выяснить, находится ли пользователь в bash, csh или ksh. Пользователи переключаются между оболочками, поэтому необходимо определить активную оболочку, в которой они находятся. Я попытался:
set shell [exec echo \$0]
puts stdout "echo $shell;"
if { [string first "bash" $shell] != -1 } {
puts stdout "echo should be bash, is $shell;"
} elseif { [string first "ksh" $shell] != -1 } {
puts stdout "echo should be KSH, is $shell;"
} else {
puts stdout "echo should be csh, is $shell;"
}
К сожалению, в оболочку записывается только строка $ 0, а не действительная оболочка. Есть ли другой способ сделать это? Для контекста, это для файла модуля в Linux, который позволяет мне (и другим) устанавливать подходящую среду для конкретного программного пакета.
modulefile имеет
set shell [shell-info-shell]
, но это не дает активную оболочку.
EDIT:
Чтобы уточнить, я хочу знать, в какой оболочке я нахожусь, чтобы я мог запускать
something.sh if I am in bash
something.ksh if I am in ksh
something.csh if I am in csh
. Все эти сценарии должны делать немного разные вещи, прежде чем программное обеспечение, которое люди хотят запустить, может быть запущено в заданном режиме. ракушка. Это будет вызвано в терминале, и программное обеспечение, которое люди хотят использовать, будет также запущено в этом терминале.
Спасибо!