Сделал Вы изменяете свои настройки PuTTY; После того как Вы ввели свое имя сервера или IP-адрес, измените настройки SSH-> X11: Установите флажок "Enable X11 forwarding" и тип localhost:0 в "X местоположений дисплея". Не забывайте возвращаться к "Сессии" и сохранять Ваши изменения.
Используйте pathmunge () функция, доступная в большей части дистрибутива /etc/profile
:
pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
fi
}
править: Для zsh
пользователи, typeset -U <variable_name>
дедуплицирует записи пути.
PATH
не всегда то же.
– Christopher Bottoms
19 October 2010 в 19:26
Только одна строка:
for i in $(echo $PATH|tr ":" "\n"|sort|uniq);do PATH_NEW="${PATH_NEW}$i:";done;PATH="${PATH_NEW%:}"
$PATH
. Мне нравится помещать определенные каталоги в начале $PATH
(как /home/username
) так, чтобы мои персональные копии исполняемых файлов были выполнены вместо встроенных значений по умолчанию.
– Christopher Bottoms
19 October 2010 в 19:32
Я могу думать о двух различных способах, которыми Вы могли разрешить это. Первый, должен запустить Ваш .bashrc со строки, которая явно устанавливает Ваш основной ПУТЬ, тот путь каждый раз, когда Вы получаете его, это сбрасывается к основе до добавления дополнительных каталогов.
Например, добавьте:
# Reset the PATH to prevent duplication and to make sure that we include
# everything we want.
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Поочередно, можно проверить на объект перед добавлением его к пути. Чтобы сделать это, Вы использовали бы что-то как:
if ! [[ $PATH =~ '~/perl5/bin' ]]
then
PATH="~/perl5/bin:$PATH"
fi
Последний склонен становиться немного повторяющимся, если Вы добавляете много записей, однако, таким образом, я склонен придерживаться первого. Если Вы хотели использовать это и запланированный при добавлении большого количества записей, пишущий, что функция удара для обработки его будет мудра.
Примечание: Вторая опция может только работать, как записано в современном ударе версий. Поддержка регулярного выражения не является Оболочкой Bourne (/bin/sh) функция и не может существовать в других оболочках. Кроме того, использование кавычек не может быть необходимо или может даже вызвать проблемы на некоторых новейших версиях удара.
PATH
не всегда то же.
– Christopher Bottoms
19 October 2010 в 19:20
I was having this issue so I used a combination of techniques listed on StackOverflow question. The following is what I used to dedupe the actual PATH variable that had already been set, since I didn't want to modify the base script.
tmppath=(${PATH// /@})
array=(${tmppath//:/ })
for i in "${array[@]//@/ }"
do
if ! [[ $PATH_NEW =~ "$i" ]]; then
PATH_NEW="${PATH_NEW}$i:";
fi
done;
PATH="${PATH_NEW%:}"
export PATH
unset PATH_NEW
You could always optimize this a bit more, but I had extra code in my original to display what was happening to ensure that it was correctly setting the variables. The other thing to note is that I perform the following
This is to ensure that I can handle directories with spaces in (Samba home directories with Active Directory usernames can have spaces!)
Вот мое решение:
ПУТЬ = $ (echo -n $ PATH | awk -v RS =: -v ORS =: '! X [$ 0] ++' | sed "s / \ (. * \). \ {1 \} / \ 1 / ")
Хороший простой лайнер, не оставляющий следов:
/etc/profile
на Debian Lenny, таким образом, я включаю его в мой.bashrc
. использование – Christopher Bottoms 19 October 2010 в 19:15pathmunge /some/path
поместит/some/path
в начале$PATH
иpathmunge /some/path after
поместит/some/path
в конце$PATH
– Christopher Bottoms 19 October 2010 в 19:18if ! [[ $PATH =~ (^|:)$1($|:) ]] ; then
. – Christopher Cashell 28 October 2010 в 19:38