Bunu doğru şekilde yapmadığınız anlaşılıyor.
Üçüncü şeyi yapmaya çalıştığınızı fakat yanlış sözdizimi kullandığınızı sanıyorum. Gördüğünüz gibi hatalar üretebilecek beş yaygın hata şunlardır:
Bunun yerine boşluk kullanmak =
. export NAME value
yanlış; value
daha sonra dışa aktarılacak bir sonraki değişkenin adı olarak yorumlanır.
(Bunun nedeni export NAME1 NAME2
, birden çok değişkeni dışa aktarmak için doğru sözdizimi olmasıdır.)
Etrafa boşluklar koymak =
. Birçok programlama dilinde, çoğu zaman boşluklu ped operatörleri için hem geçerli hem de stilistik olarak tercih edilir. Ancak kabuk betiğindeki bir değişkene (veya kabuk komutları verdiğiniz başka bir duruma) değer atamak için buna izin verilmez. NAME = value
(bir export
komutta veya başka bir şekilde) çalışmaz; kullanmalısın NAME=value
.
( export NAME = value
İhracat değişkenlere çalışır adında NAME
, =
ve value
. Neyse bu adlı bir değişken ihraç etmeye teşebbüs sessizce çünkü başarılı olması için görünür asla =
aksine. Bir yazım hatasıdır export NAME= value
işe görünecektir, ancak atama yapmaz value
etmek NAME
, boş atar, --instead sıfır uzunluklu dizgiye NAME
ve dışa aktarır ve değişkeni ayrı olarak dışa aktarır value
. Her ikisi de yaygın hatalardır.)
Değişken değerinin bölümlerini boşluklarla ayırmak. Ortam değişkenleri olabilir boşluk içermemelidir, ama pratikte nadiren ortam değişkenleri alan ayırıcı olarak kullanılır. Tek bir değişken kasıtlı olarak birden çok yol içerdiğinde, genellikle :
bunları ayırmak için kullanılır.
Değişkenlere atanırken boşluklar belirtilmez. Bazen bir ortam değişkeninin değerinin boşluk içerdiği varsayılır. Örneğin, gerçekten boşluk içeren bir dizinin adı olabilir. Bu durumda, herhangi bir boşluk alıntılamak gerekir.
Bunu yapmanın bir yolu onlardan önce gelmektir \
. Bkz . Bir cd komutuna aktarılan parantezleri nasıl koruyabilirim? ve Diğer yollarla ilgili bilgi için dosya silinemiyor - her iki soru da özellikle ortam değişkenlerine atama ile ilgili olmasa da, cevaplarda sunulan yöntemler geçerlidir.
Örneğin, ortam değişkenini SILLYPATH
şu değerle vermenin birkaç yolu şunlardır /home/ek/silly name/bin
:
export SILLYPATH=/home/ek/silly\ name/bin
export SILLYPATH='/home/ek/silly name/bin'
export SILLYPATH="/home/ek/silly name/bin"
Genellikle bir kabukta kullanmanız veya yaygın olarak kullanılan bir ortam değişkenine atamanız gereken bir klasör boşluk içerdiğinde, yeniden adlandırılmasından yararlanabilir. (Ama bazen bu pratik veya istenmeyen bir durumdur.)
Hiçbir şey yapılması gerekmediğinde bir değişken atama ve / veya dışa aktarma. Bu bir tür meta-hatadır; belirli teknik sorun genellikle yukarıdakilerden biridir, ancak çözüm, düzeltmek yerine rahatsız edici çizgiden veya bir kısmından kurtulmaktır. .bashrc
Elbette kodu rastgele ayırmayın . Ancak, export
yanlışlıkla bir eklenmiş olabilir veya istemeden daha fazla kod içerebilir. Örneğin, şunu yazmak istediğinizi varsayalım:
echo 'export PATH=~/some.bin:"$PATH"' >>~/.bashrc; . ~/.bashrc
Bu eklenir .bashrc
, sonra yeniden kaynaklanır. Ancak bunun yerine şunu yazdığınızı varsayalım:
echo 'export PATH=~/some.bin:"$PATH" . ~/.bashrc' >>~/.bashrc # WRONG!
Ardından export
komutunuz yalnızca artırılmış bir değerini dışa aktarmaz PATH
, aynı zamanda .
ve adında değişkenleri dışa aktarmaya çalışır . Değişken adlarında yasaklanmış karakterler içerdiğinden, her yeni etkileşimli bash kabuğuna başladığınızda bir hata alırsınız./home/your-username/.bashrc
Bu sorunu önlemek için, çıktıyı sonuna yönlendirmek yerine .bashrc
bir düzenleyicide (ör. nano ~/.bashrc
, gedit ~/.bashrc
) Düzenlemenizi öneririm >>
.