Eu tenho uma função que converte época até a data. Aqui está a definição
date1(){
date -d @$1
}
Eu gostaria de poder escrever:
$ date1 xxxyyy
Onde xxxyyy é o parâmetro que passo na minha função para que eu possa obter a data correspondente. Eu entendo que eu tenho que adicioná-lo em qualquer .bash_profile
, .profile
ou .bashrc
e, em seguida, fonte ele:
$ source file
Mas não tenho certeza de qual arquivo colocá-lo. Atualmente, tenho o arquivo .profile
. Mas para executá-lo, eu tenho que fazer o source .profile
tempo todo.
Idealmente, deve disponibilizá-lo quando o computador iniciar como a variável de ambiente.
Respostas:
De
man bash
:Em outras palavras, você pode colocá-lo em qualquer uma das
~/.bash_profile
,~/.bash_login
ou~/.profile
, ou quaisquer arquivossource
de d, por um desses . Normalmente~/.profile
, o código-fonte~/.bashrc
é o "arquivo de inicialização pessoal, executado para shells de login".Para habilitá-lo, inicie um novo shell, execute
exec $SHELL
ou executesource ~/.bashrc
.fonte
.bash_profile
, também tenho que fazersource ~/.bash_profile
toda vez que abro o terminal por atalhoCtrl+Alt+T
.source ~/.bash_profile
, isso é uma indicação de que sua configuração do Bash é de alguma forma fora do padrão ou está quebrada (conforme aman bash
saída mencionada). Tem certeza de que está realmente executando o Bash? Por exemplo,echo $BASHPID
imprime alguma coisa?#!/bin/sh
ao topo da página.profile
para definir uma função?Depois de definir a função no seu
.profile
, adicioneexport -f date1
. Isso exportará a função para ser usada pelo seu shell de login.fonte
Personalizações para shells interativos entram em cena
~/.bashrc
. As coisas que você deseja executar ao fazer login são acessadas~/.profile
(ou~/.bash_profile
, mas geralmente não são carregadas ao fazer login graficamente).Coloque esta definição de função em
~/.bashrc
.Como o bash não carrega
.bashrc
quando é um shell de login, force-o a fazer isso: escreva um~/.bash_profile
contendoou seja
~/.profile
, carregar e também carregar~/.bashrc
se o shell for interativo.Veja Alternativa para .bashrc e as postagens linkadas lá.
fonte
O csh e o tcsh não suportam funções como o bash, mas você pode fazê-lo.
Por exemplo, aqui está uma função simples para imprimir algum texto
passando argumentos para o script
fazer código de várias linhas como uma instrução if é meio complicado, mas aqui está.
você ainda precisará avaliar, mas a parte mais complexa é fazer a
\!:[x]
sintaxe para obter a entrada da linha de comando.Isso deve ser o suficiente para resolver o problema.
fonte
Você pode redirecionar todas as funções atuais para o bashrc com o typeset .
Por exemplo, veja como estou adicionando uma função de um comando openstack com parâmetro opcional no bashrc:
Agora ele é salvo para sessões futuras e pode ser usado como:
ou
fonte
ponto 18: Na minha memória antiga, quando um administrador, aprender ksh e bash era muito diferente. 1: - O conteúdo do / etc / profile é sysWide. / etc / skel continha o arquivo fornecido para novas contas. Desde Bash agora é comum em todas as distros. o próximo seria 2: - ~ / .profile como padrão do sistema e dentro do conteúdo de .profile "se existir" .bash_profile colocaria -> 3: - .bash_profile 4: - .bash_login 5: -. bashrc .bash_aliases estaria em na minha opinião, a ordem mais correta é a configuração do ambiente Terminal e Shell padrão e o .bash_login usual nunca encontrado ou existente (é personalizado por usuário). Com .profile $ PATH sendo principal se o.
Estou descobrindo agora adicionando também .bash_profile .profile ainda está dominando e não respeitando a presença de .bash_profile. Junto com as informações do cabeçalho, ninguém está atualizando, por exemplo: amostras de inicialização do bash - essa estrutura de diretórios não existe mais - junto com exemplos e / ou arquivos são compactados em gzip. Portanto, a atualização para o Gnu-Bash está em ordem
fonte