Как мне установить переменные $ в Unix?


6

Например, есть длинный путь, который я cd очень часто. Как мне сохранить путь в переменной, чтобы я мог использовать его каждый раз?

Например: я хочу быть в состоянии сделать это

cd $path

вместо

cd /a/b/c/d/e/f 

каждый раз.


1
Используете ли вы "C Shell" ( csh ) или более распространенная оболочка Borne / Bash ( sh а также bash соответственно)?
mctylr

@mctylr: C Shell
Lazer

Ответы:


6

предполагая, что вы действительно хотите синтаксис csh / tcsh (как вы отметили свой вопрос), поставьте это

setenv P1 "/a/b/c/d/e/f"

на ваш .tcshrc

после этого вы можете сделать

cd $P1

10

В оболочке Bash:

export FOO="/a/b/c"

а вы не хочу использовать $ path. Это особая переменная.


2
+1 хороший момент о неиспользовании $ path. Это было бы плохо.
DaveParillo

10
Ну, $ PATH - это специальная переменная, $ path - нет. Я все еще избегаю использовать это все же.
John T

2
Вам, вероятно, не нужен экспорт: достаточно было бы просто "foo = / a / b / c", если вам нужно только обратиться к этой переменной в текущей оболочке. Если вы хотите, чтобы переменная распространялась на дочерние процессы (например, когда вы запускаете другие программы из оболочки), то вам понадобится команда export.
njd

$ path в порядке, как указано выше. И этот вопрос помечен csh, и этот синтаксис для bash.
Justin Smith

7

Маловероятно, что вам нужна ваша переменная в среде.

Итак, в csh вместо setenv, ты можешь сделать:

set dir="/a/b/c/d/e/f"
cd $dir

или в баш, а не export:

dir="/a/b/c/d/e/f"
cd $dir

Каковы различия между выполнением 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.


1
Или же ~/.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.


0

Для csh вы, вероятно, хотите использовать CDPATH , Для bash используйте CDPATH вместо.

Например (bash):

prompt$ export CDPATH=:/a/b/c/d/e

prompt$ cd f
cd /a/b/c/d/e/f

Вы также можете добавить больше целей каталога, разделенных двоеточиями. Ведите двоеточие, чтобы CDPATH сначала проверял ваш текущий рабочий каталог!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.