Sepertinya Anda tidak melakukannya dengan benar.
Saya curiga Anda mencoba melakukan hal ketiga tetapi menggunakan sintaks yang salah. Lima kesalahan umum yang dapat menghasilkan kesalahan seperti yang Anda lihat adalah:
Menggunakan spasi alih-alih =
. export NAME value
salah; value
kemudian diartikan sebagai nama variabel berikutnya yang akan diekspor.
(Hal ini terjadi karena export NAME1 NAME2
adalah sintaks yang benar untuk mengekspor beberapa variabel.)
Menempatkan ruang di sekitar =
. Dalam banyak bahasa pemrograman, ini berlaku dan lebih disukai gaya untuk pad operator dengan spasi sebagian besar waktu. Tetapi untuk menetapkan nilai ke variabel dalam skrip shell (atau situasi lain di mana Anda mengeluarkan perintah shell), ini tidak diizinkan. NAME = value
(dalam export
perintah atau sebaliknya) tidak akan berfungsi; kamu harus menggunakan NAME=value
.
( export NAME = value
Mencoba untuk mengekspor variabel bernama NAME
,, =
dan value
. Untungnya ini tidak pernah muncul untuk berhasil secara diam-diam karena mencoba untuk mengekspor variabel yang dipanggil =
adalah kesalahan sintaksis. Sebaliknya export NAME= value
akan terlihat berfungsi, tetapi tidak menetapkan value
- NAME
tetapi, ia memberikan yang kosong, string nol-panjang ke NAME
dan mengekspornya, dan secara terpisah mengekspor variabel value
. Keduanya kesalahan umum.)
Memisahkan bagian dari nilai variabel dengan spasi. Variabel lingkungan dapat berisi spasi, tetapi dalam praktiknya jarang digunakan sebagai pemisah lapangan dalam variabel lingkungan. Ketika satu variabel sengaja berisi beberapa jalur, biasanya :
digunakan untuk memisahkannya.
Tidak mengutip spasi ketika menetapkan variabel. Terkadang nilai variabel lingkungan seharusnya berisi spasi. Misalnya, itu mungkin nama direktori yang benar-benar berisi spasi. Dalam hal ini, perlu mengutip ruang apa pun.
Salah satu cara untuk melakukan ini adalah dengan mendahului mereka \
. Lihat Bagaimana saya bisa melindungi tanda kurung yang diteruskan ke perintah cd? dan Tidak dapat menghapus file untuk informasi tentang cara lain - metode yang disajikan dalam jawaban berlaku, meskipun tidak ada pertanyaan yang secara khusus tentang penetapan ke variabel lingkungan.
Misalnya, berikut adalah beberapa cara untuk mengekspor variabel lingkungan SILLYPATH
dengan nilainya /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"
Sering kali ketika folder yang harus Anda gunakan dalam shell atau menetapkan ke variabel lingkungan yang banyak digunakan berisi ruang, itu mungkin mendapat manfaat dari diganti namanya. (Tapi terkadang itu tidak praktis atau tidak diinginkan.)
Menetapkan dan / atau mengekspor variabel ketika tidak ada yang harus dilakukan sama sekali. Ini semacam kesalahan meta; masalah teknis spesifik seringkali merupakan salah satu dari yang di atas, tetapi solusinya adalah dengan menyingkirkan jalur yang menyinggung, atau beberapa bagian darinya, daripada memperbaikinya. Jangan sembarangan menghapus kode dari .bashrc
, tentu saja. Tetapi sebuah export
mungkin telah ditambahkan secara tidak sengaja, atau mungkin secara tidak sengaja memiliki lebih banyak kode di dalamnya daripada yang dimaksudkan. Misalnya, Anda bermaksud menulis:
echo 'export PATH=~/some.bin:"$PATH"' >>~/.bashrc; . ~/.bashrc
Itu akan ditambahkan .bashrc
, lalu sumber ulang. Tapi misalkan Anda malah menulis:
echo 'export PATH=~/some.bin:"$PATH" . ~/.bashrc' >>~/.bashrc # WRONG!
Maka export
perintah Anda tidak hanya akan mengekspor nilai augmented PATH
, tetapi juga akan mencoba untuk mengekspor variabel bernama .
dan , yang bukan yang Anda inginkan. Karena mengandung karakter yang dilarang dalam nama variabel, jadi Anda akan mendapatkan kesalahan setiap kali Anda memulai shell pesta interaktif baru./home/your-username/.bashrc
Untuk menghindari masalah ini, saya sarankan mengedit .bashrc
di editor (misalnya nano ~/.bashrc
,, gedit ~/.bashrc
) daripada mengarahkan kembali ke akhir dengan >>
.