GNU/Linux >> Belajar Linux >  >> Linux

Instal zsh tanpa akses root?

Jika mesin memiliki zsh di dalamnya, Anda harus mengeksekusi zsh saja pada permintaan untuk bertukar, jika berhasil, Anda dapat mencoba chsh untuk menukar shell Anda (seharusnya berfungsi tanpa root) atau saat Anda terhubung dengan ssh masukkan ssh -t hostname zsh untuk memulainya secara otomatis.


Anda dapat mencoba chsh memerintah. Apakah Anda yakin zsh tidak diinstal di komputer yang jauh? Jika tidak, Anda dapat melakukannya (dikutip dari zsh FAQ Bagian 1.7)

Ide dasarnya adalah menggunakan exec untuk mengganti Shell saat ini dengan zsh. Seringkali Anda dapat melakukan ini di file login seperti .profile (jika shell Anda adalah sh atau ksh) atau .login (jika itu csh). Pastikan Anda memiliki beberapa cara untuk mengubah file (misalnya melalui FTP) sebelum Anda mencobanya karena exec sering kali tidak bisa dimaafkan.

Jika Anda memiliki zsh di bin subdirektori dari direktori home Anda, letakkan ini di .profile:

[ -f $HOME/bin/zsh ] && exec $HOME/bin/zsh -l

atau jika shell login Anda adalah csh atau tcsh, letakkan ini di .login:

if ( -f ~/bin/zsh ) exec ~/bin/zsh -l

(dalam setiap kasus, -l memberi tahu zsh bahwa ini adalah shell login).

Jika Anda ingin memeriksa ini berfungsi sebelum melakukan sendiri, Anda dapat membuat shell login menanyakan apakah akan mengeksekusi zsh. Berikut ini berfungsi untuk cangkang mirip Bourne:

[ -f $HOME/bin/zsh ] && {
        echo "Type Y to run zsh: \c"
        read line
        [ "$line" = Y ] && exec $HOME/bin/zsh -l
}

dan untuk cangkang mirip C-shell:

if ( -f ~/bin/zsh ) then
        echo -n "Type Y to run zsh: "
        if ( "$<" == Y ) exec ~/bin/zsh -l
endif

Ini bukan ide yang baik untuk memasukkan ini (bahkan tanpa -l) ke dalam .cshrc, setidaknya tanpa beberapa tes tentang apa yang seharusnya dilakukan oleh csh, karena itu akan menyebabkan setiap contoh csh untuk berubah menjadi zsh dan akan menyebabkan skrip csh (ya, sayangnya beberapa orang menulis ini) yang tidak memanggil csh -f gagal. Jika Anda ingin memberi tahu xterm untuk menjalankan zsh, ubah variabel lingkungan SHELL ke path lengkap zsh bersamaan dengan Anda menjalankan zsh (sebenarnya, ini masuk akal untuk konsistensi meskipun Anda tidak menggunakan xterm). Jika Anda harus menjalankan zsh dari .cshrc, pemeriksaan keamanan minimum adalah if ($?prompt) exec zsh.

Jika Anda ingin shell login Anda muncul di daftar proses sebagai -zsh, Anda dapat menautkan zsh ke -zsh (misalnya dengan ln -s ~/bin/zsh ~/bin/-zsh) dan mengubah exec menjadi exec -zsh. (Pastikan -zsh ada di jalur Anda.) Ini memiliki efek yang sama dengan opsi -l.

Catatan kaki:jika Anda MEMILIKI akses root, pastikan zsh masuk /etc/shells pada semua mesin yang sesuai, termasuk klien NIS, atau Anda mungkin mengalami masalah dengan FTP ke mesin itu.


Unduh zsh dengan:

wget -O zsh.tar.xz https://sourceforge.net/projects/zsh/files/latest/download
mkdir zsh && unxz zsh.tar.xz && tar -xvf zsh.tar -C zsh --strip-components 1
cd zsh

Anda dapat mengkompilasi zsh sendiri, misalnya:

./configure --prefix=$HOME
make
make install

dan kemudian mulai secara eksplisit, atau secara terprogram dari file startup shell Anda saat ini (letakkan exec $HOME/bin/zsh -l di tempat yang tepat).


Linux
  1. Instal WordPress di akun pengguna sebagai root

  2. Sejarah Bash tanpa nomor baris

  3. Bagaimana cara menginstal paket di Linux (CentOS) tanpa pengguna root dengan penanganan ketergantungan otomatis?

  1. Tanpa akses root, jalankan R dengan BLAS yang disetel saat ditautkan dengan referensi BLAS

  2. Instal emacs tanpa sudo?

  3. Jalankan ifconfig tanpa sudo

  1. Menginstal perangkat lunak di Linux tanpa hak akses root

  2. Bagaimana cara menginstal .deb secara lokal tanpa akses apt-get, dpkg atau root?

  3. Bagaimana Anda mengakses Webmin?