Unix'te $ değişkenlerini nasıl ayarlarım?


6

Mesela benim cdçok sık kullanabileceğim uzun bir yol var . Her zaman kullanabilmem için yolu bir değişkende nasıl saklarım?

Örneğin: Bunu yapabilmek istiyorum

cd $path

yerine

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

her zaman.


1
"C Shell" ( csh) veya daha yaygın olan Borne / Bash Shell ( shve bashsırasıyla) kullanıyor musunuz?
mctylr

@mctylr: C Shell
Lazer

Yanıtlar:


6

csh / tcsh sözdizimini gerçekten istediğinizi varsayarak (sorunuzu etiketlerken)

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

senin .tcshrc

ondan sonra yapabiliyorsun

cd $P1

10

Bash kabuğunda:

export FOO="/a/b/c"

Ve yok $ yolunu kullanmak istiyorum. Bu özel bir değişken.


2
$ Yolu kullanmama konusunda +1 iyi nokta. Bu kötü olurdu.
DaveParillo

10
$ PATH özel bir değişkendir, $ path değildir. Yine de kullanmaktan kaçınırdım.
John T

2
Muhtemelen dışa aktarmaya ihtiyacınız yoktur: sadece "foo = / a / b / c" yeterli olacaktır, eğer sadece bu değişkene sadece şu anki kabuğunda başvurmanız gerekiyorsa. Değişkenin alt işlemlere yayılmasını istiyorsanız (kabuktan diğer programları çalıştırdığınızda olduğu gibi), verme komutuna ihtiyacınız olacaktır.
njd

$ path, yukarıda belirtildiği gibi gayet iyi. Ve bu soru csh olarak etiketlenir ve bu sözdizimi bash içindir.
Justin Smith

7

Değişkeninize ortamda ihtiyaç duymanız olası değildir.

Böylece, yerine csh setenvyapabilirsiniz:

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

veya yerine Bash export:

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

Bir yapmanın arasındaki farklar nelerdir set dir="/a/b/c/d/e/f"ve setenv dir "/a/b/c/d/e/f"?
Lazer

@Lazer: setenvdeğişkenleri dışa aktarır, böylece alt işlemlerde kullanılabilirler. setYalnızca geçerli ortamda kullanılacak komut dosyalarını (komut dosyası veya etkileşimli kabuk) ayarlar. Çoğu zaman, sadece kullanmanız gerekir set. Ayrıca, setdizileri destekler ve setenvyapmaz.
Dennis Williamson,

3

İhracat kullanın.

dışa aktar_path = "/ a / b / c / d / e / f"

cd $ Instagram Hesabındaki Resim ve Videoları your_path

Girişler aracılığıyla devam etmesini istiyorsanız, .profile dosyanızda düzenlemeniz gerekir.


1
Veya ~/.bash_profile, sistem genelinde etki için /etc/profile. Her durumda, ısrar etmekten bahsettiği için +1.
Jonik

1
Bu yanlış kabuk için. Csh istedi.
Justin Smith

Neredeyse kesinlikle kullanmanıza gerek yok export. Bash ya da sh, your_path="/a/b/c/d/e/f"neredeyse her zaman yeterli.
Dennis Williamson,

0

Yolu yalnızca bir oturum için kullanmak istiyorsanız, değişkeni her zamanki gibi ayarlayın.

set long="/some/long/path/to/a/directory"

cd "$long"Kabuk sona erene ya da longyeniden ayarlayana kadar istediğiniz sıklıkta yapabilirsiniz .

Kabuk oturumundan çalıştırılan işlemlerde kullanılabilen değişkenle ilgileniyorsanız, bunu ortamınıza ayarlamanız gerekir.

setenv long "/some/long/path/to/a/directory"

İstediğiniz şey değişkenin her oturumda kullanılabilmesi için, yalnızca geçerli olanın yerine, kabuk çalıştırma denetiminizde ayarlamanız gerekir.

$EDITOR ~/.cshrc

Ardından , her csh oturumu için değişkeni veya ortam değişkenini otomatik olarak ayarlamak üzere yukarıda gösterilen setsatırı veya satırı ekleyin setenv.


0

Csh için muhtemelen cdpath kullanmak istersiniz . Bash için bunun yerine CDPATH kullanın.

Örneğin (bash):

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

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

Ayrıca, daha fazla sütunla ayrılmış dizin hedefleri de ekleyebilirsiniz. Öndeki kolonu koruyun, böylece CDPATH geçerli çalışma dizininizi önce kontrol eder!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.