J'ai une fonction qui convertit le temps de l'époque à ce jour. Voici la définition
date1(){
date -d @$1
}
J'aimerais pouvoir écrire:
$ date1 xxxyyy
Où xxxyyy est le paramètre que je passe dans ma fonction afin que je puisse obtenir la date correspondante. Je comprends que je dois l' ajouter dans les deux .bash_profile
, .profile
ou .bashrc
et source puis:
$ source file
Mais, je ne sais pas dans quel fichier le mettre. Actuellement, je l'ai .profile
. Mais pour le faire fonctionner, je dois le faire à source .profile
chaque fois.
Idéalement, il devrait le rendre disponible, lorsque l'ordinateur démarre comme la variable d'environnement.
Réponses:
De
man bash
:En d' autres termes, vous pouvez le mettre dans l'une des
~/.bash_profile
,~/.bash_login
ou~/.profile
, ou tout autre fichiersource
d par l' un de ces . En général~/.profile
, la source~/.bashrc
, qui est le "fichier d'initialisation personnel, exécuté pour les shells de connexion".Pour l'activer, démarrez un nouveau shell, exécutez
exec $SHELL
ou exécutezsource ~/.bashrc
.la source
.bash_profile
je dois également le faire àsource ~/.bash_profile
chaque fois que j'ouvre le terminal par raccourciCtrl+Alt+T
.source ~/.bash_profile
chaque fois, c'est une indication que votre configuration Bash est en quelque sorte non standard ou cassée (selon laman bash
sortie mentionnée). Êtes-vous sûr que vous utilisez réellement Bash? Par exemple,echo $BASHPID
imprime-t-il quelque chose?#!/bin/sh
en haut de.profile
pour définir une fonction?Après avoir défini la fonction dans votre
.profile
, ajoutezexport -f date1
. Cela exportera la fonction pour une utilisation par votre shell de connexion.la source
Les personnalisations des shells interactifs sont effectuées
~/.bashrc
. Les choses que vous souhaitez exécuter lorsque vous vous connectez vont~/.profile
(ou~/.bash_profile
, mais elles ne sont souvent pas chargées lors de la connexion graphique).Mettez cette définition de fonction dans
~/.bashrc
.Puisque bash ne se charge pas
.bashrc
quand il s'agit d'un shell de connexion, forcez-le à le faire: écrivez un~/.bash_profile
conteneurc'est-à-dire charger
~/.profile
, et aussi charger~/.bashrc
si le shell est interactif.Voir Alternative à .bashrc et les messages qui y sont liés.
la source
csh et tcsh ne supportent pas les fonctions comme bash mais vous pouvez le faire.
Par exemple, voici une fonction simple pour imprimer du texte
passer des arguments au script
faire du code sur plusieurs lignes comme une instruction if est un peu compliqué mais c'est parti.
vous devrez toujours évaluer mais la partie la plus complexe consiste à faire la
\!:[x]
syntaxe pour obtenir l'entrée de la ligne de commande.Cela devrait suffire à vous faire trier.
la source
Vous pouvez rediriger toutes les fonctions en cours de bashrc avec typeset .
Par exemple, voici comment j'ajoute une fonction d'une commande openstack avec un paramètre facultatif, dans bashrc:
Maintenant, il est enregistré pour les sessions futures et peut être utilisé comme:
ou
la source
point 18: Dans ma mémoire ancienne lorsqu'un administrateur, apprendre ksh et bash était kina dans l'autre sens. 1: - Le contenu de / etc / profile est sysWide. / etc / skel contenait le fichier donné aux nouveaux comptes. Depuis Bash maintenant premier commun de toutes les distributions. le suivant serait 2: - ~ / .profile en tant que norme système puis dans le contenu du .profile "s'il existe" .bash_profile mettrait -> 3: - .bash_profile 4: - .bash_login 5: -. bashrc .bash_aliases serait dans mon esprit l'ordre le plus correct, la mise en place de l'environnement Terminal et Shell standard et habituel .bash_login jamais trouvé ou existant (sa coutume par utilisateur). Avec .profile $ PATH étant principal si le.
Je trouve en ajoutant maintenant trop .bash_profile .profile est toujours dominant et ne respecte pas la présence de .bash_profile. Avec les informations d'en-tête, personne ne met à jour, c'est-à-dire: bash startup Samples - cette structure de répertoire n'est plus - ainsi que des exemples et / ou des fichiers sont gzip'd. Donc, la mise à jour de Gnu-Bash est en ordre
la source