GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso usare Bash come shell di accesso quando l'amministratore di sistema si rifiuta di farmi cambiare?

L'amministratore di sistema unix su cui sto lavorando è riluttante a concedermi l'accesso per modificare la mia shell di accesso da ksh per bash . Ha fornito varie scuse, la più divertente è che dal momento che scrivono tutti i loro script per ksh non funzioneranno se provo a eseguirli. Non so dove abbia preso queste idee, ma siccome non riesco a convincerlo, c'è qualche alternativa che ho?

(chsh è installato su queste macchine, ma utilizziamo coppie di chiavi pubbliche/private per l'accesso e non ho alcuna password, quindi quando chsh mi chiede una password non ho niente da darle. )

Risposta accettata:

Quando accedi, il file ~/.profile viene letto dalla shell di login (ksh per te). Puoi indicare a quella shell di accesso di sostituirsi con bash. Dovresti prendere alcune precauzioni:

  • Sostituisci la shell di accesso solo se è interattiva. Questo è importante:altrimenti, l'accesso in modalità grafica potrebbe non funzionare (questo dipende dal sistema:alcuni ma non tutti i sistemi leggono ~/.profile quando si accede tramite xdm o simili) e idiomi come ssh foo '. ~/.profile; mycommand' fallirà.
  • Verifica che bash sia disponibile, in modo da poter comunque accedere se l'eseguibile non è presente per qualche motivo.

Puoi scegliere se eseguire bash come shell di accesso o meno. L'unica grande differenza nel renderlo una shell di accesso è che caricherà ~/.bash_profile o ~/.profile . Quindi, se esegui bash come shell di accesso, fai molta attenzione ad avere un ~/.bash_profile o fai attenzione a non eseguire bash in modo ricorsivo da ~/.profile . Non c'è alcun vantaggio reale nell'avere ~/.profile eseguito da bash anziché da ksh, quindi consiglierei di non farlo.

Imposta anche il SHELL variabile di ambiente su bash, in modo che programmi come emulatori di terminale invochino quella shell.

Ecco il codice per passare a bash. Mettilo alla fine di ~/.profile .

case $- in
  *i*)
    # Interactive session. Try switching to bash.
    if [ -z "$BASH" ]; then # do nothing if running under bash already
      bash=$(command -v bash)
      if [ -x "$bash" ]; then
        export SHELL="$bash"
        exec "$bash"
      fi
    fi
esac

Linux
  1. Come utilizzare la password crittografata nello script della shell Bash Linux

  2. Come cambiare Cron Shell (sh To Bash)?

  3. Come posso trovare la versione di Fedora che uso?

  4. Come modificare la risoluzione di Bash per una VM Debian?

  5. Come cambiare rapidamente la prima parola in un comando Bash?

Come utilizzare il comando cd di Linux per cambiare directory

Come modificare il carattere della shell di GNOME

Come utilizzare il comando Declare in Linux Bash Shell

Come modificare la shell predefinita nel sistema Linux

Come utilizzare Linux Bash Shell in Windows 10?

Android - Come posso utilizzare i comandi della shell e interagire con il sistema Linux sottostante?