Для обнаружения сессии SSH использовать $SSH_CLIENT
.
Для различения локальные и удаленные сеансы существует два возможных подхода: клиентская или серверная сторона. На стороне сервера выдержать сравнение $SSH_CLIENT
с локальным IP-адресом или таблицей маршрутизации; это будет обычно говорить Вам, является ли соединение от LAN. На стороне клиента можно хотеть поместить ForwardX11
настройки в Вашем ~/.ssh/config
: установите его на yes
для хостов LAN и к no
для хостов WAN. Это подразумевает наличие другого ~/.ssh/config
на различных сайтах; это - то, что я делаю, и я генерирую мой со сценарием оболочки.
Если передача X11 идет для соединений LAN и прочь для соединений WAN, то можно установить любимого редактора для взятия $DISPLAY
во внимание.
Настройки серверной стороны обычно входили бы в Ваш .profile
(или .bash_profile
если Ваша оболочка входа в систему является ударом, и Вы используете .bash_profile
, или .zprofile
если Ваша оболочка входа в систему является zsh).
case ${SSH_CLIENT%% *}//$(/sbin/ifconfig |
sed -n 's/^.* addr:\([0-9][0-9.]*\) .*/\1/p' |
tr '\n' /)/ in
"") :;;# local session
10.42.*/10.42.*) :;; # LAN session
1.2.3.*/1.2.3.*) :;; # LAN session
*) unset DISPLAY;; # WAN session
esac
export EDITOR=vim
if [ -n "$DISPLAY" ] && type gvim >/dev/null 2>/dev/null; then
EDITOR=gvim
fi
export VISUAL="$EDITOR"
Вы обычно не вводите команду для выполнения Apache: это запускается когда начальные загрузки системы. Сценарии в /etc/init.d
запустите сервисы, и выполняются автоматически во время начальной загрузки, если Ваша система настраивается правильно. С большинством дистрибутивов сервисам включают по умолчанию и запустятся, если Вы не сделали что-то для отключения их.
Если Вы остановили Apache и хотите перезапустить его, /etc/init.d/apache2 start
нормальный путь — или предпочтительно service apache2 start
. Это было бы мало полезно, чтобы иметь более короткую команду, так как это не что-то, что Вы сделали бы как часть использования нормальной системы. Команды, которые предназначаются для общего использования, может быть выполнен, не указывая их полный путь; эти команды находятся в каталогах, перечисленных в PATH
переменная среды (какой Windows подражает).
Необходимо, вероятно, использовать service
управляйте для запуска его.
service apache2 start
И апачские аргументы должны быть в Вашем /etc/apache2
структура.
Существует много способов вызвать команду (сценарий или двоичный исполняемый файл), это не в досягаемости Вашего PATH
.
Те методы хороши для знания - но при нахождении всего больше необычных трюков только для выполнения команд, затем это указало бы меньше, чем оптимальное проектирование системы.
Скажем, это - Ваш сценарий, названный s
, и Вы помещаете его в /home
(для создания этого недостижимым, как /home
находится несомненно не в Вашем PATH
):
echo "The first argument is: $1"
echo "The second argument is: $2"
Три способа все еще достигнуть его, не давая полный путь:
Псевдоним: alias salias='/home/s'
Функция: sfunc () { /home/s $@ }
Ссылка: ln -s /home/s slink
Первые два при использовании их снова Вы вставили свой файл инициализации оболочки (.bashrc
для удара, .zshrc
для zsh, и т.д.). Для использования ссылки (третий случай) необходимо было бы поместить его в каталог, включенный в Вас PATH
, или, Вы вызвали бы его явно с полным путем (например, если Вы находитесь в том же каталоге, ./slink one two
).
Это вызвано тем, что/etc/init.d/не установлен в $PATH.
Это - по существу:-separated список каталогов. При выполнении команды оболочка перерывает каждый из этих каталогов, один за другим, пока это не находит каталог, где исполняемый файл существует. (http://www.cs.purdue.edu/homes/cs348/unix_path.html)