В первую очередь, немного фона. Я приношу извинения заранее за неправильное употребление терминологии. Исправьте меня в случае необходимости.
Для моей работы я собираюсь быть рабочими моделированиями удаленно через ssh на нескольких машинах человечности. Эти машины находятся в сети, и моя учетная запись связана через всех них, т.е. $HOME
/home/links/Ogaday
и зеркально отражается через каждую машину. Таким образом, я делаю каталог на одной машине в той папке, и это появляется в другой машине (это - случай, где я не знаю, как использовать корректные термины). Существует также локальная память на каждой машине, доступной каждым пользователем на той машине, названной /scratch/
. Я сделаю каталог в /scratch/
для выполнения в моей фактической работе потому что я не думаю, что у меня есть достаточно памяти на моей учетной записи для выполнения моделирований в $HOME, и это будет быстрее, потому что это все локально, я принимаю.
Теперь, существует программное обеспечение, установленное на тех машинах, которые я должен использовать, и оно установлено в каталогах, к которым у меня нет доступа для записи (/usr/local/software/
). Однако то программное обеспечение имеет сценарий удара, который устанавливает переменные среды. Я, как предполагается, добавляю сценарий удара (source /usr/local/software/etc/bashrc
) к $HOME/.bashrc
для установки необходимых переменных среды. Довольно стандартный до сих пор, это настраивает все, чтобы это программное обеспечение работало, когда я вхожу в систему, корректный? Теперь, я думаю, что программное обеспечение на этих компьютерах не было настроено правильно, потому что .../etc/bashrc
как предполагается, устанавливает названную переменную $SOFTWARE_INST_DIR
, каталог установки. По умолчанию это $HOME/software
, и необходимо изменить это bashrc файл так, чтобы это вместо этого установило его на /usr/local/software
. Конечно, у меня нет доступа для записи к к .../etc/bashrc
. Существуют другие подобные проблемы, это - просто вещь, которая перестала работать сначала.
Как фиксация, я скопировал тот файл в $HOME/software-etc/bashrc
и добавленный source $HOME/software-etc/bashrc
кому: $HOME/.bashrc
вместо добавления source /usr/local/software/etc/bashrc
, так, чтобы я мог отредактировать переменные, это присваивается. Есть ли что-нибудь существенно неправильно с этим? Я думал, что другое решение будет к, вместо того, чтобы копировать bashrc файл с местоположения установки программного обеспечения, добавляя export $HOME=/scratch/ogaday
к .bashrc, который я принимаю, повторно присвоил бы мой корневой каталог для царапания. Я корректен? Действительно ли это опасно? Я действительно не использовал бы эти машины ни для чего больше кроме выполнения долгих моделирований на них.
PS: конечное решение состояло бы в том, чтобы попросить, чтобы парни IT изучили его, я предполагаю! Я сделал бы быстрое исправление хотя, если это возможно.
Нет, нет ничего неправильно с копированием емкостно-резистивного файла где-то в другом месте. Тем не менее, в то время как можно действительно изменить Ваш $HOME
путем добавления HOME=/foo
к одному из чтения файлов на запуске (~/.profile
, например), который является действительно не хорошей идеей. HOME
используется многими вещами, не только Вашими сценариями и нет никакой причины изменить его, так как это может иметь непреднамеренные последствия.
Например, конфигурационные файлы по умолчанию для множества программ, включая Вашу оболочку, хранятся в $HOME
. При изменении этого настройки будут потеряны.
Теперь, если я понимаю правильно, Ваша основная цель здесь состоит в том, чтобы иметь $HOME/software
точка к /usr/local/software
. Вместо того, чтобы копировать файлы вокруг, простое решение состояло бы в том, чтобы сделать $HOME/software
ссылка, указывающая /usr/local/software
.
Переименовать $HOME/software
(если это уже существует):
mv $HOME/software $HOME/software.old
Сделайте ссылку названной $HOME/software
это указывает на /usr/local/software
:
ln -s /usr/local/software $HOME/software
Теперь, что-либо поиск $HOME/software
на самом деле найдет /usr/local/software
вместо этого.
Точно так же, чтобы сделать Вашу работу локально над каждой машиной, создайте каталог в /scratch
и затем свяжите его с Вашим $HOME
:
mkdir /scratch/ogaday
ln -s /scratch/ogaday $HOME/work
Теперь, все Вы выполняете $HOME/work
на самом деле произойдет в /scratch/ogaday
.
Наконец, примите во внимание, что существуют различные типы оболочки. Когда Вы регистрируетесь на пути ssh
, Вы выполняете интерактивную оболочку входа в систему и во многих системах, $HOME/.bashrc
проигнорирован теми оболочками. В то время как Ubuntu конкретно также читает $HOME/.bashrc
, для таких оболочек много других дистрибутивов не делают. Поэтому более безопасно использовать $HOME/.profile
и нет $HOME/.bashrc
установить переменные среды. Посмотрите здесь для объяснения того, какие файлы читаются когда.