Когда вы запускаете сценарий оболочки, он выполняется в под-оболочке. То, что вам нужно, это выполнить его в контексте текущей оболочки, поставив его с:
source myshell.sh
или
. myshell.sh
Последнее - мой предпочтительный подход, так как я по своей природе ленив.
Если вы говорите об общесистемной области видимости, поскольку вы хотите повлиять на всех, вам нужно поместить свои команды в место, где они получены во время входа в систему (или во время создания оболочки), /etc/profile
например. То, куда вы помещаете свои команды, зависит от используемой оболочки.
Чтобы узнать, какие сценарии выполняются, просмотрите страницу man
для вашей оболочки:
man bash
Оболочка bash
, когда вызывается как оболочка входа в систему (в том числе как оболочка без регистрации, но с параметром --login
), будет использовать /etc/profile
и первое из ~/.bash_profile
, ~/.bash_login
или ~/.profile
.
Не входящие в систему bash
оболочки будут использовать. если не вызывается с --norc
или --rcfile <filename>
, файлы /etc/bash.bashrc
и ~/.bashrc
.
Я почти уверен, что это даже больше запутанного, чем это, в зависимости от того, как работает оболочка, но это настолько сильно, насколько растягивается моя память. На странице man
все должно быть подробно.