Quiero poder iniciar zsh con un archivo rc personalizado similar al comando: bash --rc-file /path/to/file
Si esto no es posible, ¿es posible iniciar zsh, ejecutar source /path/to/filey luego permanecer en la misma sesión de zsh?
Nota: El comando zsh --rcs /path/to/fileno funciona, al menos no para mí ...
EDITAR: En su totalidad, deseo poder hacer lo siguiente:
 ssha un servidor remoto "example.com", ejecutar zsh, sourcemi configuración ubicada en /path/to/file, todo en 1 comando. Aquí es donde tuve problemas, especialmente porque prefiero no escribir sobre ningún archivo de configuración en la máquina remota.

code as such!Respuestas:
De las páginas del manual:
por lo que debería poder establecer la variable de entorno
ZDOTDIRen un nuevo directorio para que zsh busque un conjunto diferente de archivos de puntos.Como sugiere la página del manual,
RCSyGLOBAL_RCSno son rutas a archivos rc, ya que está intentando utilizarlos, sino más bien opciones que puede habilitar o deshabilitar. Entonces, por ejemplo, la bandera--rcshabilitará laRCSopción, causando que zsh lea de los archivos rc. Puede usar los siguientes indicadores de línea de comandos para zsh para habilitar o deshabilitarRCSoGLOBAL_RCS:Para responder a su otra pregunta:
Sí, esto es bastante fácil de acuerdo con las instrucciones anteriores. Solo corre
zsh -d -fy luegosource /path/to/zshrc.fuente
zsh -d -f; source /path/to/filenunca ejecuta el segundo comando en la primera sesión de zsh hasta que sale.ssha un servidor remoto "example.com", ejecutezsh,sourcemi configuración ubicada en/path/to/file, todo en 1 comando. Aquí es donde tuve problemas, especialmente porque prefiero no escribir sobre ningún archivo de configuración en la máquina remota. Gracias por tu respuesta sin embargo!ssh host "zsh -d -f; source /path/to/file", ssh se ejecutará primerozshen el host remoto, luego,source ...después de que salga el shell zsh. En cambio, lo que desea hacer esssh -t host zsh -d -fcolocarlo en un shell interactivo en el host remoto, o si no quiere un shell interactivo, hágalossh host zsh -d -f -c \"source /path/to/file\; other command\; ... \".ssh -t host "zsh -d -f; source /path/to/fileme deja en unzshshell interactivo (y estéril) .ssh -t host "zsh -d -f; source /path/to/file", el comandosource...NO se ejecuta dentro del shell zsh. Se ejecuta en su shell de inicio de sesión después de que se cierra el shell zsh. Para probar esto, corressh host "zsh; echo foo". Verá la salida "foo" después de salir del shell zsh.mientras que con ZDOTDIR, puede indicar
zshque interprete un archivo llamado.zshrcen cualquier directorio de su elección, hacer que interprete cualquier archivo de su elección (no necesariamente llamado.zshrc) resulta bastante difícil.En
shokshemulación,zshevalúa$ENV; para que puedas agregaremulate zshen la parte superior de tu/path/to/filey hacer:Otro enfoque muy complicado puede ser:
Ese merece un poco de explicación.
${foo::=value}es una expansión variable que realmente establece$foo.$functionses una matriz asociativa especial que asigna nombres de funciones a sus definiciones.Con la
promptsubstopción, las variables$PS1se expanden. Entonces, en el primer aviso, las variables en esa PS1 se expandirán.La
zsh_directory_namefunción es una función especial que ayuda a expandir ay~fooal/path/to/somethingrevés. Que se utiliza, por ejemplo, con%~la pronta por lo que si el directorio actual es/opt/myproj/proj/xque puede mostrarlo como~proj:xpor tenerzsh_directory_namehacer el mapeoproj:x<=>/opt/myproj/proj/x. Eso también lo usa laDbandera de expansión de parámetros. Entonces, si uno se expande${(D)somevar}, esazsh_directory_namefunción se llamará.Aquí, estamos usando
${(D):-},${:-}que se${no_var:-nothing}expande anothingsi$no_varestá vacío, por lo que se${(D):-}expande a nada mientras se llamazsh_directory_name.zsh_directory_namese ha definido previamente como:Es decir, en la primera expansión de PS1 (en el primer aviso),
${(D):-}hará que lapromptsubstopción se desactive (para cancelar-o promptsubst),zsh_directory_name()que no esté definida (ya que queremos ejecutarla solo una vez),$PS1que no se establezca y/path/to/fileque se obtenga.${PS1=%m%# }se expande (y se asigna$PS1) a%m%#menos que PS1 ya esté definido (por ejemplo,/path/to/filedespués deunset), y%m%#resulta ser el valor predeterminado dePS1.fuente