¿Qué regalitos están presentes en las conchas de UNIX sans BASH?


5

He estado usando 'bash' desde el momento en que he estado usando Unix-Linux/Solaris. Ahora, estoy interesado en saber qué ofrecen las shells como 'ksh', 'zsh'? ¿Qué usan los "geeks"?

5

Soy parcial de zsh (es como una mezcla de ksh y bash). El guide tiene una buena descripción de sus características. Este page tiene una bonita tabla que muestra la disponibilidad de diferentes funciones en diferentes shells.

  0

'zle' (http://zsh.sunsite.dk/Guide/zshguide04.html#l75) parece genial. 22 feb. 092009-02-22 04:21:19


0

Tenía una lista para proporcionar el historial de shell por sesión.

Lo único aquí era que cada ventana tenía su propio historial de shell. Muy conveniente.

  0

¿Esto es a través de bash? 28 feb. 092009-02-28 02:15:36

  0

Hice esto con ksh yo mismo. No lo hago de esa manera ahora, pero creo que puedes lograr esto con zsh, y probablemente con bash. 28 feb. 092009-02-28 02:46:03

  0

En algunos sistemas lo obtuve mediante el enlace simbólico de .history (o es .sh_history) a/dev/null. En otros tuve que compilar un caparazón personalizado. 06 may. 092009-05-06 20:05:06


1

Uso ksh93 por preferencia. Esto significa que los conceptos básicos de ksh están disponibles en casi cualquier sistema en el que me encuentre, por lo que mi experiencia interactiva y el 98% de mi perfil complejo siguen siendo los mismos.

  0

+1 Si habitualmente trabaja en un único (u otro pequeño número) de sabores del sistema * nix, entonces cualquier shell está bien. Si trabajas en "algunos" o "muchos" sabores de SO diferentes, entonces ksh debe saltar rápidamente a la parte superior de tu lista de shells preferidos. Nunca he encontrado un * nix que no incluyera ksh como shell predeterminado. 07 jul. 092009-07-07 15:15:23


3
  • bash: En mi experiencia, la mayoría de las personas usan bash, en parte porque es el shell estándar en la mayoría de los sistemas Linux.

  • ksh: Muchos sistemas Solaris usan ksh en su lugar, pero eso parece estar perdiendo popularidad para bash.

  • csh: Csh solía ser más popular, pero generalmente fue reemplazado por tcsh. tcsh no es malo para aquellos que están muy cómodos con la sintaxis similar a c.

  • zsh: No he usado zsh, pero parece ser muy rico en funciones.

Personalmente, prefiero bash, ya que está instalado en casi todos los sistemas operativos compatibles con UNIX, es muy versátil, y es un buen compromiso entre una sencilla herramienta de línea de comandos y un lenguaje de script.


1

bash es un poco lento, pero al igual que muchos programas FSF, intenta incorporar todas las características conocidas. Yo uso ksh93, que ha convergido en gran medida con bash. La principal ventaja de ksh es que tiene una interfaz agradable para extender el shell con código C. También es un poco más fácil de personalizar, por ejemplo, para hacer que la tecla de tabulación haga lo que quiera, en contexto. La desventaja es que la finalización del comando no está incorporada; tienes que programarlo

Evitar csh y sus derivados :-)


1

En mi experiencia, hay muy pocos objetos valiosos en conchas estándar de Unix (en los que eso significa, para mí, csh, sh, ksh) que no están también presentes en al al menos una forma equivalente en bash. En consecuencia, mientras se sienta cómodo con que bash estará en todas sus máquinas, también puede usarlo para obtener la máxima funcionalidad.

OTOH, si desea lidiar con la portabilidad, probablemente use ksh, que se asemeja bastante al estándar POSIX - con algunas extensiones (bash también es bastante parecido al estándar POSIX, pero con bastante más extensiones).

me gusta mucho el POSIX $(cmd) anotación en lugar del clásico de back-garrapatas

`cmd` 

(Eso no fue divertido en Markdown!). Una de las razones principales para el gusto de ella es que es mucho, mucho más fácil para anidar las llamadas:

gcclib=$(dirname $(dirname $(which gcc)))/lib 

conseguir ese derecho en una línea con copias de las garrapatas es tan tonto que no se trataría de convertirlo en una -transatlántico. Eso está en ksh y bash; no está en el shell clásico de Bourne (/bin/sh, pero tenga en cuenta que /bin/sh en algunas máquinas no es el shell Bourne clásico, sino bash disfrazado), ni en el shell C.


2

Bash es mejor saber para la compatibilidad más amplia, puede sentarse básicamente en cualquier Unix y estará allí.

Zsh es una de las conchas más modernas, probablemente. Hay todo tipo de cosas locas y divertidas que puedes hacer con eso


1

Si usas bash y estás contento con él, no necesitas cambiarlo de inmediato. Es un buen caparazón. Conocer su historia también te dice algo al respecto: Bourne Again SHell. Fue un buen intento de crear un shell mejor que el C-Shell y sus derivados (como tcsh), lo que le permite usar la sintaxis/bin/sh para secuencias de comandos (o para uso interactivo), pero agregando algunas de las características más agradables de csh (como historia, etc.).

El shell Korn y Bash tienen mucho en común, en concepto de todos modos. Al igual que/bin/sh, el Korn shell provino originalmente de AT & T y no fue de origen abierto hasta hace relativamente poco tiempo. Tiene un buen mecanismo de historial y bloquea el archivo en los archivos de estado de historial, de modo que si están montados en servidores de archivos de red, varias copias del intérprete de comandos escribirán correctamente en el archivo del historial sin molestarse mutuamente. También es compatible con la sintaxis/bin/sh e incorpora algunas de las ventajas de/bin/csh. Hay mucho para ksh, y generalmente es un shell bastante bueno, si puedes encontrarlo. Solía ​​usarlo en Solaris, especialmente cuando estaba trabajando en Sun. No quería instalar nada que no venga con el sistema operativo, ya que instalé un nuevo sistema operativo varias veces a la semana, por lo que esta fue una buena opción.

Ahora uso Bash o zsh. Prefiero zsh debido a su amplio conjunto de funciones para la finalización de comandos y para escribir funciones de shell en general (para mis shells interactivos, cuando programo scripts, me apego a las funciones normales del shell Bourne).

Como han dicho otros, es mejor evitar cualquier versión del C-shell, excepto aquellas shells que le dan algunas características de/bin/csh pero que no se derivan del código/bin/csh.