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.