Saya menggunakan ikan sebagai shell saya di Debian dan baru-baru ini (setelah beberapa upgrade) setiap kali saya mencoba menggunakan perintah yang saya miliki:
set: No such file or directory
set: Could not add component /usr/lib/x86_64-linux-gnu/libfm to PATH.
set: No such file or directory
Menjalankan ini:
echo $PATH
Memberi saya ini:
/usr/lib/x86_64-linux-gnu/libfm /usr/local/bin /usr/bin /bin /usr/local/games /usr/games
Dalam sistem saya tidak ada /usr/lib/x86_64-linux-gnu/libfm
, jadi saya mengerti mengapa ikan mengeluh, tetapi saya tidak dapat menemukan cara menghapus jalur ini dari $PATH
variabel saya .
Adakah yang tahu bagaimana saya bisa melakukan ini?
shell
path
environment-variables
fish
tomekK
sumber
sumber
grep -R /usr/lib/x86_64-linux-gnu/libfm ~/.config/fish /usr/share/fish
??Jawaban:
Cara 'fish' untuk menetapkan variabel $ PATH adalah dengan benar-benar menggunakan
set --universal fish_user_paths $fish_user_paths /new/path/here
. Kemudian $ fish_user_paths sebenarnya ditambahkan ke variabel $ PATH ketika sesi baru dimulai. Dokumentasi $ PATH saat ini tidak memberi tahu Anda cara menghapusnya.Dalam fish, setiap variabel sebenarnya adalah daftar (array), dan Anda dapat dengan mudah mengakses setiap item secara langsung dengan menggunakan indeks / indice.
echo $fish_user_paths
akan mencetak versi yang dibatasi spasi dari setiap item dalam daftar, membuat spasi baris baru dengan fungsi terjemahanecho $fish_user_paths | tr " " "\n"
dan kemudian meletakkan nomor baris di atasnya dengan fungsi baris angkaecho $fish_user_paths | tr " " "\n" | nl
,. Lalu hapus denganset --erase --universal fish_user_paths[5]
. Anda harus menggunakan--universal
atau tidak akan bekerja di sesi baru apa pun.Jika seseorang punya waktu, kirimkan PR ke repo dengan contoh ini. Saya membuka masalah di sini .
tldr;
echo $fish_user_paths | tr " " "\n" | nl
// dapatkan nomor yang ingin Anda hapus, mis. yang ke-5set --erase --universal fish_user_paths[5]
// hapus jalur ke-5 secara universal sehingga tetap ada di sesi barusumber
Seperti yang dikatakan Elia, praktik terbaik adalah memodifikasi yang
fish_user_paths
bukan globalPATH
. Untuk menghindari keharusan menggunakan Google ini lagi ...fish_user_paths
Untuk menambah jalur pengguna:
Untuk menghapus jalur pengguna jika ada (sebagian kredit untuk ini ):
Dan tentu saja, untuk menjadikannya autoloading :
Contoh penggunaan:
sumber
Ini harus menghapus jalur 6 melalui jalur terakhir:
Bendera -e dihapus. Lihat
help set
.sumber