Abaikan variabel dari shell lain

0

Saya berada di workstation linux di jaringan, dengan distrib "lama". Selanjutnya, shell login diberlakukan untuk CSH. Saya sudah bertanya kepada Admin apakah mungkin untuk beralih ke yang lain (saya ingin melakukan bash), tetapi itu tidak boleh dilakukan ...

Oleh karena itu, saya menjalankan bash dari baris perintah, sebagai shell non-login interaktif (sebenarnya saya menggunakan terminal gnome dan gnome dengan profil yang menjalankan / bin / bash -i sebagai perintah). Banyak, jika tidak semua skrip saya menggunakan bash jadi saya menjalankannya darinya memanggil bash dengan skrip. Itu berantakan tapi berhasil.

Saya memiliki .cshrc dengan variabel lingkungan, alias dan opsi untuk csh yang didefinisikan dalam file .login dan .cshrc di $ HOME saya. Saya juga memiliki .bashrc / .bash_profile (yang dialihkan ke .bashrc jika ini shell interaktif) / .bash_aliases dengan beberapa variabel lain dan beberapa yang sama. Ketika saya menjalankan bash shell, saya mewarisi dari variabel environment yang didefinisikan dalam file .login saya. Saya ingin mengabaikan semua yang diatur dalam yang ini ketika saya menjalankan bash.

Saya ingin tahu apakah ada opsi untuk menjalankan bash, mengabaikan setiap variabel lingkungan lainnya yang sebelumnya ditentukan dari sesi login CSH saya ketika saya menjalankan BASH shell saya.

Apakah Anda punya ide?

Terima kasih

Marc-Olivier Titeux
sumber

Jawaban:

2

Alih-alih menghapus secara manual variabel yang tidak ingin Anda warisi, jalankan bash menggunakan envperintah:

env -i bash

The -ibendera menyebabkan bashmengabaikan lingkungannya diwariskan.

chepner
sumber
Itulah tepatnya yang saya cari! Terima kasih!
Marc-Olivier Titeux
0

Anda ingin menjalankan bash sebagai shell non-interaktif, di dalam CSH, dengan variabel bash didefinisikan dalam .bash_profile bukan?

Anda bisa menembak:

./bash --login
source ./bash --login

tetapi saya tidak bisa mengujinya.

okobaka
sumber
Terimakasih telah menjawab. Itu tidak melakukan apa yang saya suka juga: setenv $ PLOUC "PLOUZ" didefinisikan dalam .cshrc masih memberi saya PLOUZ ketika saya melakukan echo $ PLOUC setelah / bin / bash --login
Marc-Olivier Titeux
jadi setelah ./bash --loginmenjalankan inisource .bash_profile
okobaka
Sayangnya hasil yang sama ...
Marc-Olivier Titeux
Bash sendiri dapat mewarisi var dari lingkungan yang dieksekusi, mencari switch yang tepat man bash. Jika Anda hanya ingin menghapus variabel dari lingkungan saja unset VARNAME1 VARNAME2.
okobaka
1
Cetak semuanya env | awk -F= '/^\w/ {print $1}' | xargs:, lalu hapus yang penting dan tidak disetel.
okobaka