+1 хороший момент о неиспользовании $ path. Это было бы плохо.
DaveParillo
10
Ну, $ PATH - это специальная переменная, $ path - нет. Я все еще избегаю использовать это все же.
John T
2
Вам, вероятно, не нужен экспорт: достаточно было бы просто "foo = / a / b / c", если вам нужно только обратиться к этой переменной в текущей оболочке. Если вы хотите, чтобы переменная распространялась на дочерние процессы (например, когда вы запускаете другие программы из оболочки), то вам понадобится команда export.
njd
$ path в порядке, как указано выше. И этот вопрос помечен csh, и этот синтаксис для bash.
Justin Smith
7
Маловероятно, что вам нужна ваша переменная в среде.
Каковы различия между выполнением set dir="/a/b/c/d/e/f" а также setenv dir "/a/b/c/d/e/f"?
Lazer
@Lazer: setenv экспортирует переменные, чтобы они были доступны в дочерних процессах. set устанавливает переменные, которые будут использоваться только в текущей среде (сценарий или интерактивная оболочка). Большую часть времени вам нужно только использовать set, Также, set поддерживает массивы и setenv не делает.
Dennis Williamson
3
Используйте экспорт.
export your_path = "/ a / b / c / d / e / f"
cd $ your_path
Если вы хотите, чтобы он сохранялся при входе в систему, вам нужно отредактировать его в файле .profile.
Или же ~/.bash_profile или, для общесистемного эффекта, /etc/profile, +1 за упоминание о сохранении этого, в любом случае.
Jonik
1
Это для неправильной оболочки. Он хотел csh.
Justin Smith
Вам почти наверняка не нужно использовать export, В Баш или sh, your_path="/a/b/c/d/e/f" почти всегда достаточно.
Dennis Williamson
0
Если вы просто хотите использовать путь для одного сеанса, установите переменную как обычно
set long="/some/long/path/to/a/directory"
Вы можете тогда cd "$long" так часто, как вам нравится, пока оболочка не завершится или вы не установите long снова.
Если вы заинтересованы в том, чтобы переменная была доступна процессам, запущенным из сеанса оболочки, вам следует установить ее в своей среде
setenv long "/some/long/path/to/a/directory"
Если вы хотите, чтобы переменная была доступна для каждого сеанса, а не только для текущего, вам нужно будет установить ее в своем контроле запуска оболочки.
$EDITOR ~/.cshrc
Затем добавьте set линия или setenv показанная выше строка для автоматической установки переменной или переменной среды для каждого сеанса работы csh.
csh
) или более распространенная оболочка Borne / Bash (sh
а такжеbash
соответственно)?Ответы:
предполагая, что вы действительно хотите синтаксис csh / tcsh (как вы отметили свой вопрос), поставьте это
на ваш .tcshrc
после этого вы можете сделать
источник
В оболочке Bash:
export FOO="/a/b/c"
а вы не хочу использовать $ path. Это особая переменная.
источник
Маловероятно, что вам нужна ваша переменная в среде.
Итак, в csh вместо
setenv
, ты можешь сделать:или в баш, а не
export
:источник
set dir="/a/b/c/d/e/f"
а такжеsetenv dir "/a/b/c/d/e/f"
?setenv
экспортирует переменные, чтобы они были доступны в дочерних процессах.set
устанавливает переменные, которые будут использоваться только в текущей среде (сценарий или интерактивная оболочка). Большую часть времени вам нужно только использоватьset
, Также,set
поддерживает массивы иsetenv
не делает.Используйте экспорт.
export your_path = "/ a / b / c / d / e / f"
cd $ your_path
Если вы хотите, чтобы он сохранялся при входе в систему, вам нужно отредактировать его в файле .profile.
источник
~/.bash_profile
или, для общесистемного эффекта,/etc/profile
, +1 за упоминание о сохранении этого, в любом случае.export
, В Баш илиsh
,your_path="/a/b/c/d/e/f"
почти всегда достаточно.Если вы просто хотите использовать путь для одного сеанса, установите переменную как обычно
Вы можете тогда
cd "$long"
так часто, как вам нравится, пока оболочка не завершится или вы не установитеlong
снова.Если вы заинтересованы в том, чтобы переменная была доступна процессам, запущенным из сеанса оболочки, вам следует установить ее в своей среде
Если вы хотите, чтобы переменная была доступна для каждого сеанса, а не только для текущего, вам нужно будет установить ее в своем контроле запуска оболочки.
Затем добавьте
set
линия илиsetenv
показанная выше строка для автоматической установки переменной или переменной среды для каждого сеанса работы csh.источник
Для csh вы, вероятно, хотите использовать CDPATH , Для bash используйте CDPATH вместо.
Например (bash):
Вы также можете добавить больше целей каталога, разделенных двоеточиями. Ведите двоеточие, чтобы CDPATH сначала проверял ваш текущий рабочий каталог!
источник